Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-11-25 09:36:20 +01:00
22 changed files with 424 additions and 188 deletions

View File

@@ -14,7 +14,7 @@ public class ExecutorServiceConfig {
private final int corePoolSize = Runtime.getRuntime().availableProcessors(); private final int corePoolSize = Runtime.getRuntime().availableProcessors();
private final int maxPoolSize = (int) (corePoolSize * 1.5f); private final int maxPoolSize = (int) (corePoolSize * 1.5f);
private final int queueSize = 500; private final int queueSize = 1_000_000;
@Bean @Bean
public ExecutorService taskExecutor() { public ExecutorService taskExecutor() {

View File

@@ -59,8 +59,12 @@ public class DbmsChangeTracker {
if (integryConnection.isClosed()) if (integryConnection.isClosed())
createConnection(); createConnection();
} catch (SQLException e) { } catch (SQLException e) {
try {
try { try {
integryConnection.close(); integryConnection.close();
} catch (Exception ex) {
//ignore
}
createConnection(); createConnection();
} catch (SQLException ex) { } catch (SQLException ex) {
logger.error("Unable to reestablish DB connection for Change Tracker", ex); logger.error("Unable to reestablish DB connection for Change Tracker", ex);

View File

@@ -0,0 +1,96 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251124164630 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getMaterialiDistinta",
"CREATE FUNCTION [dbo].[getMaterialiDistinta](@codProd VARCHAR(15), @explodeSemilavorati BIT)\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN(WITH distinta AS (SELECT cod_prod,\n" +
" CONVERT(VARCHAR(15), NULL) AS cod_parent,\n" +
" cod_prod AS cod_mart,\n" +
" jtb_cicl.descrizione_prod AS descrizione,\n" +
" jtb_cicl.descrizione_estesa,\n" +
" CONVERT(VARCHAR(3), unt_mis_prod) AS unt_mis_prod,\n" +
" CONVERT(NUMERIC(20, 5), rap_conv_prod) AS rap_conv_prod,\n" +
" CONVERT(NUMERIC(20, 5), jtb_cicl.qta_prod) AS qta_prod,\n" +
" CONVERT(NUMERIC(20, 5), jtb_cicl.qta_prod) AS qta_dist,\n" +
" 1 AS livello,\n" +
" FORMAT(ROW_NUMBER() OVER ( ORDER BY cod_prod), '00000') AS item_id,\n" +
" CONVERT(VARCHAR(15), cod_prod) AS cod_prod_pri,\n" +
" CAST(0 AS BIT) AS ricorsione,\n" +
" CONVERT(NUMERIC(5, 2), 0) AS perc_sfrido,\n" +
" CONVERT(INT, NULL) AS num_fase,\n" +
" CONVERT(VARCHAR(1), NULL) AS flag_pri,\n" +
" CONVERT(VARCHAR(1024), NULL) AS note,\n" +
" CAST(1 AS BIT) AS is_root,\n" +
" CAST(0 AS BIT) AS is_foglia\n" +
" FROM jtb_cicl\n" +
" WHERE (@codProd IS NULL OR cod_prod = @codProd)\n" +
" UNION ALL\n" +
" SELECT distinta.cod_prod,\n" +
" CONVERT(VARCHAR(15), jtb_dist_mate.cod_prod) AS cod_parent,\n" +
" jtb_dist_mate.cod_mart,\n" +
" jtb_dist_mate.descrizione,\n" +
" jtb_dist_mate.descrizione_estesa,\n" +
" CONVERT(VARCHAR(3), jtb_dist_mate.unt_mis_dist) AS unt_mis_prod,\n" +
" CONVERT(NUMERIC(20, 5), jtb_dist_mate.rap_conv_dist) AS rap_conv_prod,\n" +
" CONVERT(NUMERIC(20, 5),\n" +
" ((jtb_dist_mate.qta_std * (1 + jtb_dist_mate.perc_sfrido / 100)) /\n" +
" (distinta.qta_prod)) * distinta.qta_prod) AS qta_prod,\n" +
" CONVERT(NUMERIC(20, 5), NULL),\n" +
" distinta.livello + 1,\n" +
" distinta.item_id + '_' +\n" +
" FORMAT(\n" +
" ROW_NUMBER() OVER ( ORDER BY jtb_dist_mate.flag_pri DESC, jtb_dist_mate.num_fase, id_riga ),\n" +
" '00000') AS item_id,\n" +
" CONVERT(VARCHAR(15), distinta.cod_mart) AS cod_prod_pri,\n" +
" CAST(CASE\n" +
" WHEN jtb_dist_mate.cod_mart = jtb_dist_mate.cod_prod THEN 1\n" +
" ELSE 0 END AS BIT) AS ricorsione,\n" +
" jtb_dist_mate.perc_sfrido,\n" +
" jtb_dist_mate.num_fase,\n" +
" CONVERT(VARCHAR(1), jtb_dist_mate.flag_pri) AS flag_pri,\n" +
" CONVERT(VARCHAR(1024), jtb_dist_mate.note) AS note,\n" +
" CAST(0 AS BIT) AS is_root,\n" +
" CAST(IIF(jtb_dist_mate.flag_pri = 's', 0, 1) AS BIT) AS is_foglia\n" +
" FROM jtb_dist_mate\n" +
" INNER JOIN distinta ON jtb_dist_mate.cod_prod = distinta.cod_mart\n" +
" INNER JOIN mtb_aart ON mtb_aart.cod_mart = jtb_dist_mate.cod_mart\n" +
" WHERE distinta.ricorsione = 0\n" +
" AND (distinta.is_root = 1 OR distinta.flag_pri = 'S' OR @explodeSemilavorati = 1))\n" +
" SELECT cod_prod,\n" +
" cod_parent,\n" +
" cod_mart,\n" +
" descrizione,\n" +
" descrizione_estesa,\n" +
" unt_mis_prod,\n" +
" rap_conv_prod,\n" +
" ISNULL(qta_dist, qta_prod) AS qta_prod,\n" +
" livello,\n" +
" item_id,\n" +
" cod_prod_pri,\n" +
" perc_sfrido,\n" +
" num_fase,\n" +
" DENSE_RANK() OVER ( PARTITION BY cod_prod ORDER BY cod_prod_pri ) - 1 + num_fase AS num_fase_calc,\n" +
" flag_pri,\n" +
" note,\n" +
" is_root,\n" +
" is_foglia\n" +
" FROM distinta)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,5 +1,7 @@
package it.integry.ems.rules.completing; package it.integry.ems.rules.completing;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.service.comuni.entities.Comune; import it.integry.ems.service.comuni.entities.Comune;
import it.integry.ems.service.comuni.service.ComuniService; import it.integry.ems.service.comuni.service.ComuniService;
import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.Connection;
@@ -227,4 +229,19 @@ public class AnagRules extends QueryRules {
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql); return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
} }
public static boolean completeSetupInsDest(Connection connection) {
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
return entityCacheComponent.<StbGestSetup>getCachedEntitiesStream(connection.getIntegryCustomerDB(), StbGestSetup.ENTITY,
x -> x.getGestName().equalsIgnoreCase("GTB_ANAG") &&
x.getSection().equalsIgnoreCase("SETUP") &&
x.getKeySection().equalsIgnoreCase("INSERISCI_DEST_CLIE"))
.map(x -> "S".equalsIgnoreCase(x.getValue()))
.findFirst()
.orElse(false);
}
} }

View File

@@ -69,6 +69,10 @@ public class EntityProcessor {
return processEntity(entity, false, multiDBTransactionManager); return processEntity(entity, false, multiDBTransactionManager);
} }
public <T> T processEntity(EntityInterface entity, MultiDBTransactionManager multiDBTransactionManager, RequestDataDTO requestDataDTO) throws Exception {
return (T) processEntity(entity, false, true, requestDataDTO.getUsername(), multiDBTransactionManager, requestDataDTO);
}
public <T> T processEntity(EntityInterface entity, MultiDBTransactionManager multiDBTransactionManager, boolean completeEntity) throws Exception { public <T> T processEntity(EntityInterface entity, MultiDBTransactionManager multiDBTransactionManager, boolean completeEntity) throws Exception {
return processEntity(entity, false, multiDBTransactionManager, completeEntity); return processEntity(entity, false, multiDBTransactionManager, completeEntity);
} }

View File

@@ -1,15 +1,20 @@
package it.integry.ems.service.comuni.controller; package it.integry.ems.service.comuni.controller;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.comuni.dto.SavePositionRequestDTO; import it.integry.ems.service.comuni.dto.SavePositionRequestDTO;
import it.integry.ems.service.comuni.entities.Comune; import it.integry.ems.service.comuni.entities.Comune;
import it.integry.ems.service.comuni.exceptions.ComuniException; import it.integry.ems.service.comuni.exceptions.ComuniException;
import it.integry.ems.service.comuni.service.ComuniService; import it.integry.ems.service.comuni.service.ComuniService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@@ -20,18 +25,24 @@ public class ComuniController {
@Autowired @Autowired
private ComuniService comuniService; private ComuniService comuniService;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private RequestDataDTO requestDataDTO;
@PostMapping(value = "savePosition") @PostMapping(value = "savePosition")
public ServiceRestResponse savePosition(@RequestParam(CommonConstants.PROFILE_DB) String config, public ServiceRestResponse savePosition(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestBody SavePositionRequestDTO request) throws Exception { @RequestBody SavePositionRequestDTO request) throws Exception {
return ServiceRestResponse.createPositiveResponse(comuniService.savePosition(request)); return ServiceRestResponse.createPositiveResponse(comuniService.savePosition(multiDBTransactionManager, request, requestDataDTO));
} }
@PostMapping(value = "retrievePosition") @PostMapping(value = "retrievePosition")
public ServiceRestResponse retrievePosition(@RequestParam(CommonConstants.PROFILE_DB) String config, public ServiceRestResponse retrievePosition(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestBody String id) throws Exception { @RequestBody String id) throws Exception {
return ServiceRestResponse.createPositiveResponse(comuniService.retrievePosition(id)); return ServiceRestResponse.createPositiveResponse(comuniService.retrievePosition(multiDBTransactionManager, requestDataDTO, id));
} }
@PostMapping(value = "infoComuni") @PostMapping(value = "infoComuni")

View File

@@ -1,19 +1,19 @@
package it.integry.ems.service.comuni.service; package it.integry.ems.service.comuni.service;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.comuni.base.CapCittaProv;
import it.integry.ems.service.comuni.base.ComuniSearchableFields;
import it.integry.ems.service.comuni.dto.SavePositionRequestDTO; import it.integry.ems.service.comuni.dto.SavePositionRequestDTO;
import it.integry.ems.service.comuni.entities.Comune;
import it.integry.ems.service.comuni.exceptions.ComuniException;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.StbPosizioni; import it.integry.ems_model.entity.StbPosizioni;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
import it.integry.googleCloudApi.service.GeocodingService;
import it.integry.ems.service.comuni.base.CapCittaProv;
import it.integry.ems.service.comuni.base.ComuniSearchableFields;
import it.integry.ems.service.comuni.entities.Comune;
import it.integry.ems.service.comuni.exceptions.ComuniException;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import it.integry.googleCloudApi.dto.IndirizzoDTO; import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.googleCloudApi.service.GeocodingService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@Scope("request")
public class ComuniService { public class ComuniService {
@Autowired @Autowired
@@ -35,14 +34,11 @@ public class ComuniService {
@Autowired @Autowired
private EntityProcessor entityProcessor; private EntityProcessor entityProcessor;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public List<Comune> getComuni() { public List<Comune> getComuni() {
return unitaTerritorialiService.getComuni(); return unitaTerritorialiService.getComuni();
} }
public StbPosizioni savePosition(SavePositionRequestDTO savePositionRequestDTO) throws Exception { public StbPosizioni savePosition(MultiDBTransactionManager multiDBTransactionManager, SavePositionRequestDTO savePositionRequestDTO, RequestDataDTO requestDataDTO) throws Exception {
StbPosizioni position = new StbPosizioni() StbPosizioni position = new StbPosizioni()
.setCitta(savePositionRequestDTO.getCitta()) .setCitta(savePositionRequestDTO.getCitta())
.setIndirizzo(savePositionRequestDTO.getIndirizzo()) .setIndirizzo(savePositionRequestDTO.getIndirizzo())
@@ -53,17 +49,17 @@ public class ComuniService {
.setLng(BigDecimal.valueOf(savePositionRequestDTO.getLng())); .setLng(BigDecimal.valueOf(savePositionRequestDTO.getLng()));
position.setOperation(OperationType.INSERT); position.setOperation(OperationType.INSERT);
entityProcessor.processEntity(position, multiDBTransactionManager); entityProcessor.processEntity(position, multiDBTransactionManager, requestDataDTO);
position.setOperation(OperationType.SELECT_OBJECT); position.setOperation(OperationType.SELECT_OBJECT);
return position; return position;
} }
public StbPosizioni retrievePosition(String id) throws Exception { public StbPosizioni retrievePosition(MultiDBTransactionManager multiDBTransactionManager, RequestDataDTO requestDataDTO, String id) throws Exception {
StbPosizioni position = new StbPosizioni().setId(Long.valueOf(id)); StbPosizioni position = new StbPosizioni().setId(Long.valueOf(id));
position.setOperation(OperationType.SELECT_OBJECT); position.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(position, multiDBTransactionManager); entityProcessor.processEntity(position, multiDBTransactionManager, requestDataDTO);
return position; return position;
} }

View File

@@ -333,10 +333,10 @@ public class GeneraOrdLav {
.setFlagEvasoProd(flagEvasoProd != null ? flagEvasoProd.getValue().toString() : null) .setFlagEvasoProd(flagEvasoProd != null ? flagEvasoProd.getValue().toString() : null)
.setGeneraOrdLavDaProd(dtbOrdt.isGeneraOrdLavDaProd()); .setGeneraOrdLavDaProd(dtbOrdt.isGeneraOrdLavDaProd());
if (row.getFlagSospesoOrdl() !=null) { if (row.getFlagSospesoOrdl() != null) {
ordT.setFlagSospeso(row.getFlagSospesoOrdl()); ordT.setFlagSospeso(row.getFlagSospesoOrdl());
} }
if (row.getRifOrdOrdl() !=null) { if (row.getRifOrdOrdl() != null) {
ordT.setRifOrd(row.getRifOrdOrdl()); ordT.setRifOrd(row.getRifOrdOrdl());
} }
@@ -1477,7 +1477,7 @@ public class GeneraOrdLav {
} }
if (dataInizProdOld != null && dataInizNew != null && dataInizProdOld != EmsRestConstants.LOCAL_DATE_NULL && dataInizNew != EmsRestConstants.LOCAL_DATE_NULL){ if (dataInizProdOld != null && dataInizNew != null && dataInizProdOld != EmsRestConstants.LOCAL_DATE_NULL && dataInizNew != EmsRestConstants.LOCAL_DATE_NULL) {
Integer ggDiff = Math.toIntExact(UtilityLocalDate.daysAfterDate(dataInizProdOld, dataInizNew)); Integer ggDiff = Math.toIntExact(UtilityLocalDate.daysAfterDate(dataInizProdOld, dataInizNew));
if (ggDiff != 0) { if (ggDiff != 0) {
sql = "SELECT * FROM dtb_ordr"; sql = "SELECT * FROM dtb_ordr";
@@ -1542,7 +1542,7 @@ public class GeneraOrdLav {
BigDecimal qtaProdOld = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); BigDecimal qtaProdOld = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
BigDecimal qtaProdNew = qtaProd.multiply(rapConv); BigDecimal qtaProdNew = qtaProd.multiply(rapConv);
BigDecimal moltiplicatore = qtaProdNew.divide(qtaProdOld, 5); BigDecimal moltiplicatore = qtaProdNew.divide(qtaProdOld, 5, RoundingMode.HALF_UP);
if (!moltiplicatore.equals(BigDecimal.ONE)) { if (!moltiplicatore.equals(BigDecimal.ONE)) {
sql = "SELECT * FROM dtb_ordr"; sql = "SELECT * FROM dtb_ordr";

View File

@@ -482,7 +482,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
super(logger); super(logger);
} }
public DtbOrdt(String gestione, LocalDate dataOrd,Integer numOrd) { public DtbOrdt(String gestione, LocalDate dataOrd, Integer numOrd) {
super(logger); super(logger);
this.gestione = gestione; this.gestione = gestione;
this.dataOrd = UtilityLocalDate.localDateToDate(dataOrd); this.dataOrd = UtilityLocalDate.localDateToDate(dataOrd);
@@ -1789,7 +1789,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
@Override @Override
public void checkPreSave() throws Exception { public void checkPreSave() throws Exception {
switch(getOperation()) { switch (getOperation()) {
case NO_OP: case NO_OP:
case SELECT_OBJECT: case SELECT_OBJECT:
case SELECT: case SELECT:
@@ -1935,7 +1935,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
if (this == other) if (this == other)
return true; return true;
if(hashCodeKey() != other.hashCodeKey()) if (hashCodeKey() != other.hashCodeKey())
return false; return false;
return getDataOrd().equals(other.getDataOrd()) && getGestione().equals(other.getGestione()) && Objects.equals(getNumOrd(), other.getNumOrd()); return getDataOrd().equals(other.getDataOrd()) && getGestione().equals(other.getGestione()) && Objects.equals(getNumOrd(), other.getNumOrd());
@@ -1953,4 +1953,17 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
public int hashCode() { public int hashCode() {
return Objects.hash(getDataOrd(), getGestione(), getNumOrd(), getAcconto(), getActivityId(), getActivityTypeId(), getAspettoBeni(), getCausaleTrasp(), getCodAbi(), getCodAnag(), getCodAuto(), getCodBanc(), getCodBancAzi(), getCodCab(), getCodDgrpArt(), getCodDivi(), getCodEtic(), getCodFornTd(), getCodJcom(), getCodJfas(), getCodMdep(), getCodPaga(), getCodProd(), getCodTcolUi(), getCodTcolUl(), getCodVage(), getCodVage2(), getCodVdes(), getCodVvet(), getCodVvet2(), getCodVzon(), getColliPedana(), getCompilatoDa(), getControllatoDa(), getDataConsProd(), getDataConsProdMax(), getDataEsportazione(), getDataConferma(), getDataInizProd(), getDataInizTrasp(), getDataInsOrd(), getDataOrdRif(), getRifDataOrd(), getDataRicezione(), getDataRifScad(), getDataUltMod(), getDescrEstesaProd(), getDescrizionePaga(), getDescrizioneProd(), getEanFidelity(), getFlagAnnulla(), getFlagEscRoyal(), getFlagEvasoForzato(), getFlagEvasoProd(), getFlagPrzScontati(), getFlagSospeso(), getFlagTipologia(), getGestioneRif(), getItemId(), getListino(), getLivello(), getMezzo(), getModificatoDa(), getNettoMerce(), getNolo(), getNolo2(), getNote(), getNumColli(), getNumCons(), getNumFase(), getNumOrdProvv(), getNumOrdRif(), getRifNumOrd(), getPartitaMag(), getPercEsclStat(), getPersonaRif(), getPeso(), getPorto(), getQtaEvasaProd(), getQtaPrenotataRep(), getQtaProd(), getRapConvProd(), getRfid(), getRifOrd(), getRigaOrdRif(), getSconto1(), getSconto2(), getSconto3(), getSconto4(), getSerie(), getTermCons(), getTipoAnag(), getTotFasi(), getTotImponib(), getTotIva(), getTotMerce(), getTotOmaggi(), getTotProvvig(), getUntMisProd(), getFlagPrzIva(), getNoteConferma(), getCodJflav(), getTarga(), getPostiPallet(), getFlagBudget(), getDataConsRich(), getNoteExport(), getNumCnfProd(), getCodLingua(), getCambio(), getUserName(), getFlagTd(), getGestisciStralciOrdV(), getIdViaggioTestata(), getExplodeKit(), getGestisciOrdLavTx(), getOrdTrasf(), isGeneraOrdLavDaProd()); return Objects.hash(getDataOrd(), getGestione(), getNumOrd(), getAcconto(), getActivityId(), getActivityTypeId(), getAspettoBeni(), getCausaleTrasp(), getCodAbi(), getCodAnag(), getCodAuto(), getCodBanc(), getCodBancAzi(), getCodCab(), getCodDgrpArt(), getCodDivi(), getCodEtic(), getCodFornTd(), getCodJcom(), getCodJfas(), getCodMdep(), getCodPaga(), getCodProd(), getCodTcolUi(), getCodTcolUl(), getCodVage(), getCodVage2(), getCodVdes(), getCodVvet(), getCodVvet2(), getCodVzon(), getColliPedana(), getCompilatoDa(), getControllatoDa(), getDataConsProd(), getDataConsProdMax(), getDataEsportazione(), getDataConferma(), getDataInizProd(), getDataInizTrasp(), getDataInsOrd(), getDataOrdRif(), getRifDataOrd(), getDataRicezione(), getDataRifScad(), getDataUltMod(), getDescrEstesaProd(), getDescrizionePaga(), getDescrizioneProd(), getEanFidelity(), getFlagAnnulla(), getFlagEscRoyal(), getFlagEvasoForzato(), getFlagEvasoProd(), getFlagPrzScontati(), getFlagSospeso(), getFlagTipologia(), getGestioneRif(), getItemId(), getListino(), getLivello(), getMezzo(), getModificatoDa(), getNettoMerce(), getNolo(), getNolo2(), getNote(), getNumColli(), getNumCons(), getNumFase(), getNumOrdProvv(), getNumOrdRif(), getRifNumOrd(), getPartitaMag(), getPercEsclStat(), getPersonaRif(), getPeso(), getPorto(), getQtaEvasaProd(), getQtaPrenotataRep(), getQtaProd(), getRapConvProd(), getRfid(), getRifOrd(), getRigaOrdRif(), getSconto1(), getSconto2(), getSconto3(), getSconto4(), getSerie(), getTermCons(), getTipoAnag(), getTotFasi(), getTotImponib(), getTotIva(), getTotMerce(), getTotOmaggi(), getTotProvvig(), getUntMisProd(), getFlagPrzIva(), getNoteConferma(), getCodJflav(), getTarga(), getPostiPallet(), getFlagBudget(), getDataConsRich(), getNoteExport(), getNumCnfProd(), getCodLingua(), getCambio(), getUserName(), getFlagTd(), getGestisciStralciOrdV(), getIdViaggioTestata(), getExplodeKit(), getGestisciOrdLavTx(), getOrdTrasf(), isGeneraOrdLavDaProd());
} }
public void clearChilds() {
setDtbOrdr(new ArrayList<>());
setDtbOrds(new ArrayList<>());
setDtbOrdL(new ArrayList<>());
setDtbOrdMacc(new ArrayList<>());
setDtbOrdSteps(new ArrayList<>());
setDtbOrdCq(new ArrayList<>());
setDtbOrdCqr(new ArrayList<>());
setJrlDisOrd(new ArrayList<>());
setDrlOrdAttached(new ArrayList<>());
setArlSchaccOrd(new ArrayList<>());
}
} }

View File

@@ -2,10 +2,13 @@ package it.integry.googleCloudApi.controller;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.googleCloudApi.service.GeocodingService; import it.integry.googleCloudApi.service.GeocodingService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -13,6 +16,9 @@ import java.math.BigDecimal;
@Scope("request") @Scope("request")
public class GeocodingController { public class GeocodingController {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired @Autowired
private GeocodingService geocodingService; private GeocodingService geocodingService;
@@ -35,7 +41,7 @@ public class GeocodingController {
@RequestParam BigDecimal lat, @RequestParam BigDecimal lat,
@RequestParam BigDecimal lng) throws Exception { @RequestParam BigDecimal lng) throws Exception {
return ServiceRestResponse.createPositiveResponse(geocodingService.getPositionFromCoords(lat, lng)); return ServiceRestResponse.createPositiveResponse(geocodingService.getPositionFromCoords(multiDBTransactionManager, lat, lng));
} }
@GetMapping(value = "map/getCoordinatesByCity") @GetMapping(value = "map/getCoordinatesByCity")

View File

@@ -1,7 +1,8 @@
package it.integry.googleCloudApi.service; package it.integry.googleCloudApi.service;
import com.google.maps.GeocodingApi; import com.google.maps.GeocodingApi;
import com.google.maps.model.*; import com.google.maps.model.GeocodingResult;
import com.google.maps.model.Geometry;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.KeyManagerService; import it.integry.ems.service.KeyManagerService;
import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.Connection;
@@ -14,14 +15,12 @@ import it.integry.ems_model.utility.UtilityDB;
import it.integry.googleCloudApi.dto.IndirizzoDTO; import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.googleCloudApi.utility.GoogleApiUtility; import it.integry.googleCloudApi.utility.GoogleApiUtility;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
@Service @Service
@Scope("request")
public class GeocodingService { public class GeocodingService {
@Autowired @Autowired
@@ -30,9 +29,6 @@ public class GeocodingService {
@Autowired @Autowired
public EntityProcessor entityProcessor; public EntityProcessor entityProcessor;
@Autowired
public MultiDBTransactionManager multiDBTransactionManager;
@Autowired @Autowired
public SetupGest setupGest; public SetupGest setupGest;
@@ -49,13 +45,13 @@ public class GeocodingService {
return GoogleApiUtility.buildIndirizzoDTO(results); return GoogleApiUtility.buildIndirizzoDTO(results);
} }
public IndirizzoDTO getPositionFromCoords(BigDecimal lat, BigDecimal lng) throws Exception { public IndirizzoDTO getPositionFromCoords(MultiDBTransactionManager multiDBTransactionManager, BigDecimal lat, BigDecimal lng) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection(); Connection connection = multiDBTransactionManager.getPrimaryConnection();
IndirizzoDTO indirizzo; IndirizzoDTO indirizzo;
double formattedLat = lat.setScale(5, RoundingMode.HALF_EVEN).doubleValue(); double formattedLat = lat.setScale(5, RoundingMode.HALF_EVEN).doubleValue();
double formattedLng = lng.setScale(5, RoundingMode.HALF_EVEN).doubleValue(); double formattedLng = lng.setScale(5, RoundingMode.HALF_EVEN).doubleValue();
int distance = setupGest.getSetupInteger(conn, "MAPS", "SETUP", "GEOCODE_PRECISION", 50); int distance = setupGest.getSetupInteger(connection, "MAPS", "SETUP", "GEOCODE_PRECISION", 50);
String nearbyPointQuery = "SELECT * from ( " + String nearbyPointQuery = "SELECT * from ( " +
" SELECT *,(6371392.896 * acos(cos(radians(" + formattedLat + ")) * cos(radians(lat)) * " + " SELECT *,(6371392.896 * acos(cos(radians(" + formattedLat + ")) * cos(radians(lat)) * " +
@@ -66,7 +62,7 @@ public class GeocodingService {
"where distance < " + distance + "where distance < " + distance +
" ORDER BY distance"; " ORDER BY distance";
StbPosizioni stbPosizioni = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, nearbyPointQuery, StbPosizioni.class); StbPosizioni stbPosizioni = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, nearbyPointQuery, StbPosizioni.class);
if (stbPosizioni != null) { if (stbPosizioni != null) {
indirizzo = new IndirizzoDTO() indirizzo = new IndirizzoDTO()

View File

@@ -22,12 +22,7 @@ when
eval(completeRulesEnabled) eval(completeRulesEnabled)
$gtbAnag: GtbAnag( insDestinatario == null && operation != OperationType.DELETE ) $gtbAnag: GtbAnag( insDestinatario == null && operation != OperationType.DELETE )
then then
String sql = "SELECT value FROM stb_gest_setup " + Boolean insDest = AnagRules.completeSetupInsDest(conn);
" WHERE stb_gest_setup.gest_name = 'GTB_ANAG' AND " +
"stb_gest_setup.section = 'SETUP' AND " +
"stb_gest_setup.key_section = 'INSERISCI_DEST_CLIE'";
Boolean insDest = ((String) QueryRules.getSingleValue(conn, sql)).equalsIgnoreCase("S");
modify ( $gtbAnag ) { modify ( $gtbAnag ) {
setInsDestinatario(insDest) setInsDestinatario(insDest)

View File

@@ -338,7 +338,7 @@ rule "checkDeleteMtbColrWithoutDoc"
no-loop no-loop
when when
eval(checkRulesEnabled) eval(checkRulesEnabled)
$entity : MtbColr(operation == OperationType.DELETE && !hasDocument || !hasQuantity) $entity : MtbColr(operation == OperationType.DELETE && (!hasDocument || !hasQuantity))
then then
PackagesRules.checkForAnyColloRif(conn, $entity.getGestione(), $entity.getSerCollo(), $entity.getNumCollo(), $entity.getDataCollo()); PackagesRules.checkForAnyColloRif(conn, $entity.getGestione(), $entity.getSerCollo(), $entity.getNumCollo(), $entity.getDataCollo());
end end

View File

@@ -7,7 +7,6 @@ import it.integry.ems.activity.dto.UserWorkHoursClockOutRequestDTO;
import it.integry.ems.activity.dto.UserWorkHoursStatusDTO; import it.integry.ems.activity.dto.UserWorkHoursStatusDTO;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.googleCloudApi.service.GeocodingService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.service.SystemService; import it.integry.ems.system.service.SystemService;
import it.integry.ems.user.dto.UserDTO; import it.integry.ems.user.dto.UserDTO;
@@ -21,9 +20,7 @@ import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query; import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityLocalDate; import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.firebase.dto.MessageDTO; import it.integry.firebase.dto.MessageDTO;
import it.integry.firebase.dto.NotificationDTO; import it.integry.firebase.dto.NotificationDTO;
import it.integry.firebase.dto.android.AndroidConfigDTO; import it.integry.firebase.dto.android.AndroidConfigDTO;
@@ -31,6 +28,8 @@ import it.integry.firebase.dto.android.AndroidNotificationDTO;
import it.integry.firebase.dto.apns.ApnsConfigDTO; import it.integry.firebase.dto.apns.ApnsConfigDTO;
import it.integry.firebase.dto.apns.ApsDTO; import it.integry.firebase.dto.apns.ApsDTO;
import it.integry.firebase.service.NotificationService; import it.integry.firebase.service.NotificationService;
import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.googleCloudApi.service.GeocodingService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -39,9 +38,7 @@ import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -97,7 +94,7 @@ public class UserWorkHoursService {
jtbRLavt.setOperation(OperationType.INSERT_OR_UPDATE); jtbRLavt.setOperation(OperationType.INSERT_OR_UPDATE);
final IndirizzoDTO positionFromCoords = final IndirizzoDTO positionFromCoords =
geocodingService.getPositionFromCoords(userWorkHoursClockInRequestDTO.getPositionLatitude(), userWorkHoursClockInRequestDTO.getPositionLongitude()); geocodingService.getPositionFromCoords(multiDBTransactionManager, userWorkHoursClockInRequestDTO.getPositionLatitude(), userWorkHoursClockInRequestDTO.getPositionLongitude());
JtbRLavr jtbRLavr = new JtbRLavr() JtbRLavr jtbRLavr = new JtbRLavr()
.setDaOra(userWorkHoursClockInRequestDTO.getTimestamp() != null ? .setDaOra(userWorkHoursClockInRequestDTO.getTimestamp() != null ?
@@ -141,7 +138,7 @@ public class UserWorkHoursService {
jtbRLavt.setFlagTrasferta("S"); jtbRLavt.setFlagTrasferta("S");
final IndirizzoDTO positionFromCoords = final IndirizzoDTO positionFromCoords =
geocodingService.getPositionFromCoords(userWorkHoursClockOutRequestDTO.getPositionLatitude(), userWorkHoursClockOutRequestDTO.getPositionLongitude()); geocodingService.getPositionFromCoords(multiDBTransactionManager, userWorkHoursClockOutRequestDTO.getPositionLatitude(), userWorkHoursClockOutRequestDTO.getPositionLongitude());
JtbRLavr jtbRLavr = new JtbRLavr() JtbRLavr jtbRLavr = new JtbRLavr()
.setCodJcom(userWorkHoursClockOutRequestDTO.getCodJcom()) .setCodJcom(userWorkHoursClockOutRequestDTO.getCodJcom())

View File

@@ -6,7 +6,6 @@ import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.production.agribook.model.*; import it.integry.ems.production.agribook.model.*;
import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.googleCloudApi.service.GeocodingService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityFile; import it.integry.ems.utility.UtilityFile;
import it.integry.ems_model.entity.MtbDepo; import it.integry.ems_model.entity.MtbDepo;
@@ -16,6 +15,7 @@ import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import it.integry.googleCloudApi.dto.IndirizzoDTO; import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.googleCloudApi.service.GeocodingService;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -195,7 +195,7 @@ public class AgribookOrderController {
BigDecimal lng = x.getValue().get(0).getLng(); BigDecimal lng = x.getValue().get(0).getLng();
//Creazione posizione con coords //Creazione posizione con coords
IndirizzoDTO indirizzoDTO = geocodingService.getPositionFromCoords(lat, lng); IndirizzoDTO indirizzoDTO = geocodingService.getPositionFromCoords(multiDBTransactionManager, lat, lng);
MtbDepoPosizioni matchPosizione = Stream.of(mtbDepoPosizioni) MtbDepoPosizioni matchPosizione = Stream.of(mtbDepoPosizioni)

View File

@@ -6,7 +6,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import it.integry.ems.production.agribook.model.*; import it.integry.ems.production.agribook.model.*;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.googleCloudApi.service.GeocodingService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession; import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity; import it.integry.ems.utility.UtilityEntity;
@@ -15,8 +14,9 @@ import it.integry.ems_model.entity.*;
import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*; import it.integry.ems_model.utility.*;
import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.ems_model.utility.dto.PaginatedDTO; import it.integry.ems_model.utility.dto.PaginatedDTO;
import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.googleCloudApi.service.GeocodingService;
import org.apache.commons.text.StringSubstitutor; import org.apache.commons.text.StringSubstitutor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
@@ -1335,7 +1335,7 @@ public class AgribookOrderService {
for (AgribookSaveCoordsDTO saveCoordsDTO : agribookSaveCoordsDTOS) { for (AgribookSaveCoordsDTO saveCoordsDTO : agribookSaveCoordsDTOS) {
// Creazione posizione con coords // Creazione posizione con coords
IndirizzoDTO indirizzoDTO = geocodingService.getPositionFromCoords(saveCoordsDTO.getLat(), saveCoordsDTO.getLng()); IndirizzoDTO indirizzoDTO = geocodingService.getPositionFromCoords(multiDBTransactionManager, saveCoordsDTO.getLat(), saveCoordsDTO.getLng());
String codMdep = saveCoordsDTO.getCodMdep(); String codMdep = saveCoordsDTO.getCodMdep();

View File

@@ -495,7 +495,7 @@ public class MesProductionControllerV2 {
@PostMapping(value = "ordine/ripianifica") @PostMapping(value = "ordine/ripianifica")
public @ResponseBody public @ResponseBody
ServiceRestResponse ripianifica(@RequestBody RipianificaOrdineLavRequestDTO dto) throws Exception { ServiceRestResponse ripianifica(@RequestBody RipianificaOrdineLavRequestDTO dto) throws Exception {
productionOrdersLifecycleService.ripianificaOrdLav(dto); productionOrdersLifecycleService.ripianificaOrdLav(multiDBTransactionManager,dto);
return ServiceRestResponse.createPositiveResponse(); return ServiceRestResponse.createPositiveResponse();
} }

View File

@@ -353,6 +353,16 @@ public class MesProductionServiceV2 {
)); ));
} }
if (lastStep.getDataIniz() != null && lastStep.getDataFine() == null) {
throw new Exception(String.format(
"L'ordine selezionato è già in corso su questa linea. (Gestione %s, data ord. %s, num ord. %d, linea %s)",
gestioneOrd,
CommonConstants.DATE_DMY_SLASHED_FORMATTER.format(dataOrd),
numOrd,
codJfas
));
}
Date dataIniz; Date dataIniz;
if (dataInizLav == null) { if (dataInizLav == null) {
dataIniz = new Date(); dataIniz = new Date();

View File

@@ -16,6 +16,7 @@ import it.integry.ems.production.dto.ReopenOrdineLavRequestDTO;
import it.integry.ems.production.event.ProductionOrderClosedEvent; import it.integry.ems.production.event.ProductionOrderClosedEvent;
import it.integry.ems.service.AziendaService; import it.integry.ems.service.AziendaService;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug; import it.integry.ems.utility.UtilityDebug;
import it.integry.ems.utility.UtilityEntity; import it.integry.ems.utility.UtilityEntity;
@@ -27,11 +28,13 @@ import it.integry.ems_model.utility.*;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.docx4j.org.apache.xpath.operations.Mult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@@ -347,25 +350,64 @@ public class ProductionOrdersLifecycleService {
} }
} }
public void ripianificaOrdLav(RipianificaOrdineLavRequestDTO ripianificaOrdineLavRequestDTO) throws Exception { public void ripianificaOrdLav(MultiDBTransactionManager multiDBTransactionManager, RipianificaOrdineLavRequestDTO ripianificaOrdineLavRequestDTO) throws Exception {
//<editor-fold desc="Retrieve impostazioni e variabili base">
Connection connection = multiDBTransactionManager.getPrimaryConnection();
DtbOrdt ordL = new DtbOrdt(ripianificaOrdineLavRequestDTO.getGestione(), ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getNumOrd());
ordL.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(ordL, true, multiDBTransactionManager);
LocalDate dataPianificazione = UtilityLocalDate.isNull(ripianificaOrdineLavRequestDTO.getDataPianificazione(), ripianificaOrdineLavRequestDTO.getDataOrd());
String codJfas = UtilityString.isNull(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld());
boolean reimpostaLotto = setupGest.getSetupDepoBoolean("PVM", "MONITORAGGIO_LINEE_V2", "REIMPOSTA_LOTTO_ORDINE_RIPIANIFICATO", ordL.getCodMdep());
boolean flagEditedCodJfas = !ripianificaOrdineLavRequestDTO.getCodJfasOld().equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew());
boolean flagEditedDataOrd = !UtilityLocalDate.isSameDay(ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getDataPianificazione());
//</editor-fold>
if (!flagEditedCodJfas && !flagEditedDataOrd) {
throw new Exception("Nessuna modifica da apportare.");
}
//<editor-fold desc="Cambio data di produzione">
if (flagEditedDataOrd) {
ripianificaDataOrdLav(connection, ordL, ripianificaOrdineLavRequestDTO.getDataPianificazione());
ordL.clearChilds();
ordL.setOldPk(null);
}
//</editor-fold>
//<editor-fold desc="Cambio linea">
if (flagEditedCodJfas) {
ripianificaLineaOrdLav(connection, ordL, codJfas);
}
//</editor-fold>
//<editor-fold desc="Ricalcolo dati ordine di produzione">
DtbOrdr oldRigaProd = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, Query.format(
"SELECT * from dtb_ordr where gestione = {} and data_ord = {} and num_ord = {} and riga_ord = {}",
ordL.getGestioneRif(),
ordL.getDataOrdRif(),
ordL.getNumOrdRif(),
ordL.getRigaOrdRif()
), DtbOrdr.class);
if (oldRigaProd == null)
throw new Exception("Riga ordine di produzione originale non trovata.");
DtbOrdt dtbOrdtP = new DtbOrdt() DtbOrdt dtbOrdtP = new DtbOrdt()
.setCodJfas(UtilityString.isNull(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld())) .setCodJfas(codJfas)
.setDataOrd(UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataPianificazione() == null ? .setDataOrd(UtilityLocalDate.localDateToDate(dataPianificazione))
ripianificaOrdineLavRequestDTO.getDataOrd() :
ripianificaOrdineLavRequestDTO.getDataPianificazione())
)
.setGestione("A") .setGestione("A")
.setGestioneRif("A") .setGestioneRif("A")
.setGeneraOrdLavDaProd(false) .setGeneraOrdLavDaProd(false)
.setOrdTrasf(false); .setOrdTrasf(false);
dtbOrdtP.setOperation(OperationType.SELECT_OBJECT); dtbOrdtP.setOperation(OperationType.SELECT_OBJECT);
dtbOrdtP.setOnlyPkMaster(false); dtbOrdtP.setOnlyPkMaster(false);
entityProcessor.processEntity(dtbOrdtP, multiDBTransactionManager); entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager);
boolean reimpostaLotto = setupGest.getSetupDepoBoolean("PVM", "MONITORAGGIO_LINEE_V2", "REIMPOSTA_LOTTO_ORDINE_RIPIANIFICATO", dtbOrdtP.getCodMdep());
boolean flagEditedCodJfas = !ripianificaOrdineLavRequestDTO.getCodJfasOld().equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew());
boolean flagEditedDataOrd = !UtilityLocalDate.isSameDay(ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getDataPianificazione());
if (dtbOrdtP.getNumOrd() == null) { if (dtbOrdtP.getNumOrd() == null) {
@@ -375,15 +417,15 @@ public class ProductionOrdersLifecycleService {
" FROM dtb_ordt " + " FROM dtb_ordt " +
"WHERE EXISTS (SELECT * FROM dtb_ordt orl WHERE dtb_ordt.gestione = orl.gestione_rif AND dtb_ordt.data_ord = orl.data_ord_rif AND " + "WHERE EXISTS (SELECT * FROM dtb_ordt orl WHERE dtb_ordt.gestione = orl.gestione_rif AND dtb_ordt.data_ord = orl.data_ord_rif AND " +
"dtb_ordt.num_ord = orl.num_ord_rif and gestione = %s and data_ord = %s and num_ord = %s)", "dtb_ordt.num_ord = orl.num_ord_rif and gestione = %s and data_ord = %s and num_ord = %s)",
ripianificaOrdineLavRequestDTO.getGestione(), ordL.getGestione(),
ripianificaOrdineLavRequestDTO.getDataOrd(), ordL.getDataOrd(),
ripianificaOrdineLavRequestDTO.getNumOrd() ordL.getNumOrd()
); );
dtbOrdtP = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class); dtbOrdtP = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
dtbOrdtP dtbOrdtP
.setCodJfas(ripianificaOrdineLavRequestDTO.getCodJfasNew() == null ? dtbOrdtP.getCodJfas() : ripianificaOrdineLavRequestDTO.getCodJfasNew()) .setCodJfas(codJfas)
.setDataOrd(ripianificaOrdineLavRequestDTO.getDataPianificazione() == null ? dtbOrdtP.getDataOrd() : UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataPianificazione())) .setDataOrd(UtilityLocalDate.localDateToDate(dataPianificazione))
.setNumOrd(null) .setNumOrd(null)
.setGeneraOrdLavDaProd(false) .setGeneraOrdLavDaProd(false)
.setOrdTrasf(false); .setOrdTrasf(false);
@@ -392,66 +434,46 @@ public class ProductionOrdersLifecycleService {
entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager); entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager);
} }
String sql = dtbOrdtP.setOperation(OperationType.UPDATE);
Query.format("SELECT ISNULL(MAX(riga_ord), 0) + 1 FROM dtb_ordr WHERE gestione = %s AND data_ord = %s AND num_ord = %s", dtbOrdtP.getDtbOrdr().add(oldRigaProd);
Integer rigaOrdProd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), Query.format("SELECT ISNULL(MAX(riga_ord), 0) + 1 FROM dtb_ordr WHERE gestione = %s AND data_ord = %s AND num_ord = %s",
dtbOrdtP.getGestione(), dtbOrdtP.getGestione(),
dtbOrdtP.getDataOrd(), dtbOrdtP.getDataOrd(),
dtbOrdtP.getNumOrd()); dtbOrdtP.getNumOrd()));
Integer rigaOrdProd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); oldRigaProd
.setOldPk(new HashMap<String, Object>() {{
HashMap<String, Object> oldPk = new HashMap<>(); put("dataOrd", oldRigaProd.getDataOrd());
Date dataOrd = UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataOrd()); put("gestione", oldRigaProd.getGestione());
if (ripianificaOrdineLavRequestDTO.getDataPianificazione() != null && put("numOrd", oldRigaProd.getNumOrd());
!ripianificaOrdineLavRequestDTO.getDataOrd().equals(ripianificaOrdineLavRequestDTO.getDataPianificazione())) { put("rigaOrd", oldRigaProd.getRigaOrd());
oldPk.put("dataOrd", ripianificaOrdineLavRequestDTO.getDataOrd()); }});
dataOrd = UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataPianificazione()); oldRigaProd.setRigaOrd(rigaOrdProd)
} .setCodJfas(codJfas)
.setDataOrd(dtbOrdtP.getDataOrd())
DtbOrdt dtbOrdl = new DtbOrdt() .setNumOrd(dtbOrdtP.getNumOrd())
.setDataOrd(dataOrd) .setGestione(dtbOrdtP.getGestione())
.setGestione(ripianificaOrdineLavRequestDTO.getGestione()) .setOperation(OperationType.SUBSTITUTE);
.setNumOrd(ripianificaOrdineLavRequestDTO.getNumOrd()) ordL
.setGestioneRif(dtbOrdtP.getGestione()) .setGestioneRif(dtbOrdtP.getGestione())
.setDataOrdRif(dtbOrdtP.getDataOrd()) .setDataOrdRif(dtbOrdtP.getDataOrd())
.setNumOrdRif(dtbOrdtP.getNumOrd()) .setNumOrdRif(dtbOrdtP.getNumOrd())
.setDataConsProd(dataOrd) .setDataConsProd(UtilityLocalDate.localDateToDate(dataPianificazione))
.setRigaOrdRif(rigaOrdProd); .setRigaOrdRif(rigaOrdProd)
if (!oldPk.isEmpty()) { .setDtbOrdtProd(null);
dtbOrdl.setOldPk(oldPk); //</editor-fold>
dtbOrdl.setOperation(OperationType.SUBSTITUTE);
} else { //<editor-fold desc="Altre operazioni">
dtbOrdl.setOperation(OperationType.UPDATE); if (reimpostaLotto) {
ordL.setPartitaMag(EmsRestConstants.NULL);
} }
//</editor-fold>
if (reimpostaLotto && (flagEditedCodJfas || flagEditedDataOrd)) { ordL.setOperation(OperationType.UPDATE);
dtbOrdl.setPartitaMag(EmsRestConstants.NULL);
}
if (!UtilityString.equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld())) { entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager);
sql = entityProcessor.processEntity(ordL, true, multiDBTransactionManager);
Query.format(
"SELECT * FROM dtb_ord_steps WHERE gestione = %s AND data_ord = %s AND num_ord = %s ORDER BY data_fine desc",
ripianificaOrdineLavRequestDTO.getGestione(),
ripianificaOrdineLavRequestDTO.getDataOrd(),
ripianificaOrdineLavRequestDTO.getNumOrd());
DtbOrdSteps lastStep = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdSteps.class);
lastStep.setFlagStepAttivo("N");
lastStep.setOperation(OperationType.INSERT_OR_UPDATE);
dtbOrdl.getDtbOrdSteps().add(lastStep);
DtbOrdSteps dtbOrdSteps = (DtbOrdSteps) lastStep.deepClone();
dtbOrdSteps
.setCodJfas(ripianificaOrdineLavRequestDTO.getCodJfasNew())
.setIdRiga(0)
.setDataIniz(new Date())
.setDataFine(new Date())
.setFlagStepAttivo("S");
dtbOrdSteps.setOperation(OperationType.INSERT);
dtbOrdl.getDtbOrdSteps().add(dtbOrdSteps);
}
entityProcessor.processEntity(dtbOrdl, true, multiDBTransactionManager);
} }
@@ -484,4 +506,39 @@ public class ProductionOrdersLifecycleService {
throw e; throw e;
} }
} }
private void ripianificaDataOrdLav(Connection connection, DtbOrdt ordLav, LocalDate dataPianificazione) throws Exception {
HashMap<String, Object> oldPk = new HashMap<>();
oldPk.put("dataOrd", ordLav.getDataOrd());
ordLav
.setDataOrd(UtilityLocalDate.localDateToDate(dataPianificazione))
.setOldPk(oldPk);
ordLav.setOperation(OperationType.SUBSTITUTE);
entityProcessor.processEntity(ordLav, true, multiDBTransactionManager);
}
private void ripianificaLineaOrdLav(Connection connection, DtbOrdt dtbOrdt, String codJfas) throws Exception {
String sql =
Query.format(
"SELECT * FROM dtb_ord_steps WHERE gestione = %s AND data_ord = %s AND num_ord = %s ORDER BY data_fine desc, id_step DESC, id_riga DESC",
dtbOrdt.getGestione(),
dtbOrdt.getDataOrd(),
dtbOrdt.getNumOrd());
DtbOrdSteps lastStep = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdSteps.class);
lastStep.setFlagStepAttivo("N");
lastStep.setOperation(OperationType.INSERT_OR_UPDATE);
dtbOrdt.getDtbOrdSteps().add(lastStep);
DtbOrdSteps dtbOrdSteps = (DtbOrdSteps) lastStep.deepClone();
dtbOrdSteps
.setCodJfas(codJfas)
.setIdRiga(0)
.setDataIniz(new Date())
.setDataFine(new Date())
.setFlagStepAttivo("S");
dtbOrdSteps.setOperation(OperationType.INSERT);
dtbOrdt.getDtbOrdSteps().add(dtbOrdSteps);
}
} }

View File

@@ -2,6 +2,8 @@ package it.integry.ems.retail.wms.Utility;
import com.annimon.stream.Optional; import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.retail.wms.dto.InsertUDCRowRequestDTO; import it.integry.ems.retail.wms.dto.InsertUDCRowRequestDTO;
@@ -348,15 +350,12 @@ public class WMSUtility {
public static List<MtbAart> getArticoliByCodMarts(List<String> codMarts, Connection connection) throws Exception { public static List<MtbAart> getArticoliByCodMarts(List<String> codMarts, Connection connection) throws Exception {
if (codMarts == null || codMarts.isEmpty()) return null; if (codMarts == null || codMarts.isEmpty()) return null;
String query = final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
"SELECT DISTINCT mtb_aart.*"
+ " FROM mtb_aart "
+ " WHERE cod_mart IN (" + UtilityQuery.concatStringFieldsWithSeparator(codMarts, ",") + ")";
List<MtbAart> listMtbAart = entityCacheComponent.getCachedEntitiesList(
connection.getIntegryCustomerDB(), MtbAart.ENTITY, x -> codMarts.parallelStream().anyMatch(y -> y.equalsIgnoreCase(x.getCodMart())));
List<MtbAart> listMtbAart = UtilityDB.executeSimpleQueryDTO(connection, query, MtbAart.class); List<MtbAartBarCode> barCodeFromCod = getAlternativeMtbAartBarCodes(codMarts, connection);
List<MtbAartBarCode> barCodeFromCod = getBarCodeFromCod(codMarts, connection);
if (listMtbAart != null && !listMtbAart.isEmpty()) { if (listMtbAart != null && !listMtbAart.isEmpty()) {
List<String> untMisStrings = listMtbAart.stream() List<String> untMisStrings = listMtbAart.stream()
@@ -399,9 +398,18 @@ public class WMSUtility {
return mtbUntMis != null ? mtbUntMis : new ArrayList<>(); return mtbUntMis != null ? mtbUntMis : new ArrayList<>();
} }
public static List<MtbAartBarCode> getBarCodeFromCod(List<String> codMart, Connection conn) throws Exception { public static List<MtbAartBarCode> getAlternativeMtbAartBarCodes(List<String> codMarts, Connection conn) {
String sql = "SELECT * FROM mtb_aart_bar_code WHERE cod_mart IN (" + UtilityQuery.concatStringFieldsWithSeparator(codMart, ",") + ")"; codMarts = codMarts.stream()
final List<MtbAartBarCode> barCodeList = UtilityDB.executeSimpleQueryDTO(conn, sql, MtbAartBarCode.class); .distinct().collect(Collectors.toList());
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
List<String> finalCodMarts = codMarts;
List<MtbAartBarCode> barCodeList = entityCacheComponent.getCachedEntitiesList(
conn.getIntegryCustomerDB(),
MtbAartBarCode.ENTITY,
x -> finalCodMarts.stream().anyMatch(y -> y.equalsIgnoreCase(x.getCodMart())));
return barCodeList != null ? barCodeList : new ArrayList<>(); return barCodeList != null ? barCodeList : new ArrayList<>();
} }

View File

@@ -6,6 +6,7 @@ import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.service.structure.ExchangeImportDataManagerService; import it.integry.ems.system.exchange.service.structure.ExchangeImportDataManagerService;
import it.integry.ems.system.exchange.service.structure.ExchangeImportSchemaManagerService; import it.integry.ems.system.exchange.service.structure.ExchangeImportSchemaManagerService;
import it.integry.ems.task.TaskExecutorService;
import it.integry.ems_model.base.EquatableEntityInterface; import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.GtbAnag; import it.integry.ems_model.entity.GtbAnag;
import it.integry.ems_model.entity.VtbClie; import it.integry.ems_model.entity.VtbClie;
@@ -19,9 +20,11 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -45,6 +48,8 @@ public class ExchangeClientiImportService {
@Autowired @Autowired
private SetupGest setupGest; private SetupGest setupGest;
@Autowired
private TaskExecutorService taskExecutorService;
public void importClienti(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception { public void importClienti(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
@@ -65,14 +70,22 @@ public class ExchangeClientiImportService {
final Exception[] firstExceptionToThrow = {null}; final Exception[] firstExceptionToThrow = {null};
List<Callable<Void>> callableList = new ArrayList<>();
for (String diacod : diacodsToSync) { for (String diacod : diacodsToSync) {
callableList.add(() -> {
try (MultiDBTransactionManager internalMultiDbTask = new MultiDBTransactionManager(internalMultiDb.getPrimaryConnection().getProfileName(), false);
MultiDBTransactionManager exchangeMultiDbTask = new MultiDBTransactionManager(exchangeMultiDb.getPrimaryConnection().getProfileName(), false)) {
final List<GtbAnag> exchangeImportedData = retrieveClienti( final List<GtbAnag> exchangeImportedData = retrieveClienti(
exchangeMultiDb.getPrimaryConnection(), exchangeMultiDbTask.getPrimaryConnection(),
true, false, diacod); true, false, diacod);
final List<GtbAnag> exchangeUpdatedData = retrieveClienti( final List<GtbAnag> exchangeUpdatedData = retrieveClienti(
exchangeMultiDb.getPrimaryConnection(), exchangeMultiDbTask.getPrimaryConnection(),
false, useTempTable, diacod); false, useTempTable, diacod);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService List<EquatableEntityInterface> allData = exchangeImportDataManagerService
@@ -96,20 +109,24 @@ public class ExchangeClientiImportService {
} }
}); });
for (EquatableEntityInterface dataToSave : allData) { if (allData.isEmpty())
dataCount.addAndGet(-exchangeUpdatedData.size());
for (EquatableEntityInterface<?> dataToSave : allData) {
((GtbAnag) dataToSave).setPrecode(precode); ((GtbAnag) dataToSave).setPrecode(precode);
logger.debug("Importati {} clienti di {}", importedCounter.incrementAndGet(), dataCount.get()); logger.debug("Importati {} clienti di {}", importedCounter.incrementAndGet(), dataCount.get());
try {
entityProcessor.processEntity(dataToSave, true, true, EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (GtbAnag) dataToSave, useTempTable);
internalMultiDb.commitAll(); try {
exchangeMultiDb.commitAll(); entityProcessor.processEntity(dataToSave, true, true, EXCHANGE_USER, internalMultiDbTask, requestDataDTO);
singleUpdateImported(exchangeMultiDbTask.getPrimaryConnection(), (GtbAnag) dataToSave, useTempTable);
internalMultiDbTask.commitAll();
exchangeMultiDbTask.commitAll();
} catch (Exception ex) { } catch (Exception ex) {
internalMultiDb.rollbackAll(); internalMultiDbTask.rollbackAll();
exchangeMultiDb.commitAll(); exchangeMultiDbTask.commitAll();
GtbAnag gtbAnagError = (GtbAnag) dataToSave; GtbAnag gtbAnagError = (GtbAnag) dataToSave;
Exception newException = new EntityException("Errore durante l'importazione del cliente [" + Exception newException = new EntityException("Errore durante l'importazione del cliente [" +
@@ -118,10 +135,15 @@ public class ExchangeClientiImportService {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = newException; if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = newException;
logger.error(newException); logger.error(newException);
} }
}
} }
return null;
});
} }
taskExecutorService.executeTasks(callableList);
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0]; if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally { } finally {
@@ -172,7 +194,8 @@ public class ExchangeClientiImportService {
} }
private void singleUpdateImported(Connection connection, GtbAnag importedData, boolean useTempTable) throws Exception { private void singleUpdateImported(Connection connection, GtbAnag importedData, boolean useTempTable) throws
Exception {
final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{ final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{
put("cod_anag", importedData.getCodAnag()); put("cod_anag", importedData.getCodAnag());
}}; }};

View File

@@ -10,7 +10,6 @@ import it.integry.ems.report.dto.PairsDTO;
import it.integry.ems.response.EsitoType; import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.googleCloudApi.service.GeocodingService;
import it.integry.ems.service.ReportProcessor; import it.integry.ems.service.ReportProcessor;
import it.integry.ems.service.exception.EmptyReportException; import it.integry.ems.service.exception.EmptyReportException;
import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.Connection;
@@ -23,8 +22,12 @@ import it.integry.ems_model.entity.JtbRLavr;
import it.integry.ems_model.entity.JtbRLavt; import it.integry.ems_model.entity.JtbRLavt;
import it.integry.ems_model.entity.JtbRicorrenze; import it.integry.ems_model.entity.JtbRicorrenze;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.UtilityXML;
import it.integry.ems_model.utility.UtilityZip;
import it.integry.googleCloudApi.dto.IndirizzoDTO; import it.integry.googleCloudApi.dto.IndirizzoDTO;
import it.integry.googleCloudApi.service.GeocodingService;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@@ -40,8 +43,8 @@ import java.io.File;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.sql.Date;
import java.sql.*; import java.sql.*;
import java.sql.Date;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@@ -625,7 +628,7 @@ public class UtilityService {
try { try {
double lat = rs.getDouble("lat"); double lat = rs.getDouble("lat");
double lng = rs.getDouble("lng"); double lng = rs.getDouble("lng");
IndirizzoDTO address = geocodingService.getPositionFromCoords(BigDecimal.valueOf(lat), BigDecimal.valueOf(lng)); IndirizzoDTO address = geocodingService.getPositionFromCoords(multiDBTransactionManager, BigDecimal.valueOf(lat), BigDecimal.valueOf(lng));
if (address == null) { if (address == null) {
logger.debug("nessun indirizzo trovato per le coordinate : [ " + lat + " , " + lng + " ]"); logger.debug("nessun indirizzo trovato per le coordinate : [ " + lat + " , " + lng + " ]");
continue; continue;