diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/AtbListData.java b/ems-core/src/main/java/it/integry/ems_model/entity/AtbListData.java index ef1c090869..70d66571fb 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/AtbListData.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/AtbListData.java @@ -1,7 +1,6 @@ package it.integry.ems_model.entity; import com.fasterxml.jackson.annotation.JsonTypeName; -import com.google.common.base.Objects; import it.integry.common.var.CommonConstants; import it.integry.ems.rules.completing.PurchasesRules; import it.integry.ems_model.annotation.*; @@ -13,6 +12,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; @Master @PropertyReactive @@ -357,4 +357,17 @@ public class AtbListData extends EntityBase { ArlListDataAttach arlListDataAttach = new ArlListDataAttach(); arlListDataAttach.deleteAllEntities(connection, this); } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof AtbListData)) return false; + AtbListData that = (AtbListData) o; + return Objects.equals(getCodAlis(), that.getCodAlis()) && Objects.equals(getVersione(), that.getVersione()) && Objects.equals(getDataIniz(), that.getDataIniz()) && Objects.equals(getDataInizSellOut(), that.getDataInizSellOut()) && Objects.equals(getDataFine(), that.getDataFine()) && Objects.equals(getDataFineSellOut(), that.getDataFineSellOut()) && Objects.equals(getCodDiviAcq(), that.getCodDiviAcq()) && Objects.equals(getNote(), that.getNote()) && Objects.equals(getCodPromo(), that.getCodPromo()) && Objects.equals(getDataIns(), that.getDataIns()) && Objects.equals(getInseritoDa(), that.getInseritoDa()) && Objects.equals(getDataMod(), that.getDataMod()) && Objects.equals(getModificatoDa(), that.getModificatoDa()) && Objects.equals(getFlagTipoPromo(), that.getFlagTipoPromo()) && Objects.equals(getCodVage(), that.getCodVage()) && Objects.equals(getCodVvet(), that.getCodVvet()) && Objects.equals(getCostoTrasp(), that.getCostoTrasp()); + } + + @Override + public int hashCode() { + return Objects.hash(getCodAlis(), getVersione(), getDataIniz(), getDataInizSellOut(), getDataFine(), getDataFineSellOut(), getCodDiviAcq(), getNote(), getCodPromo(), getDataIns(), getInseritoDa(), getDataMod(), getModificatoDa(), getFlagTipoPromo(), getCodVage(), getCodVvet(), getCostoTrasp()); + } } diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisaData.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisaData.java index c69cf62e44..d303c0c3b4 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisaData.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbLisaData.java @@ -668,4 +668,6 @@ public class MtbLisaData extends EntityBase { MtbLisaPromo mtbLisaPromo = new MtbLisaPromo(); mtbLisaPromo.deleteAllEntities(connection, this); } + + } diff --git a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java index 409c90ba54..aa7d09bde7 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java +++ b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java @@ -4,14 +4,15 @@ import com.annimon.stream.Stream; import it.integry.WooCommerce.dto.product.TextTilesBatchUpdateRequest; import it.integry.common.var.CommonConstants; import it.integry.ems.Import.dto.ImportRequestDTO; +import it.integry.ems.rules.completing.PurchasesRules; +import it.integry.ems.service.EntityProcessor; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityDebug; +import it.integry.ems.utility.UtilityEntity; import it.integry.ems.utility.UtilityFile; import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.db.ResultSetMapper; -import it.integry.ems_model.entity.AtbList; -import it.integry.ems_model.entity.AtbListLogImport; -import it.integry.ems_model.entity.MtbLisaData; +import it.integry.ems_model.entity.*; import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.TypeDbObject; @@ -20,6 +21,8 @@ import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityHashMap; import it.integry.ems_model.utility.UtilityString; import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -45,9 +48,13 @@ public class ImportListiniAcquistoApuliaCarrefourService { @Autowired private MultiDBTransactionManager multiDBTransactionManager; + @Autowired + private EntityProcessor entityProcessor; + private final Logger logger = LogManager.getLogger(); + public List importListino(ImportRequestDTO param, String type, String format) throws Exception { Connection conn = multiDBTransactionManager.getPrimaryConnection(); - + List entityRet = new ArrayList<>(); Date dataImport; if (param != null && param.getDataImportazione() != null) { dataImport = param.getDataImportazione(); @@ -77,7 +84,6 @@ public class ImportListiniAcquistoApuliaCarrefourService { importFileCsv(conn, pathFile, type, format, setup); //INSERIMENTO TESTATE - List entityList = new ArrayList<>(); String sql = "SELECT DISTINCT " + "cod_alis, " @@ -89,9 +95,6 @@ public class ImportListiniAcquistoApuliaCarrefourService { List atbList = new ResultSetMapper() .mapQuerySetToList(conn, sql, AtbList.class, OperationType.INSERT_OR_UPDATE); - if (atbList != null) { - entityList.addAll(atbList); - } //INSERIMENTO E AGGIORNAMENTO PREZZI E CANCELLAZIONE /* @@ -215,7 +218,6 @@ public class ImportListiniAcquistoApuliaCarrefourService { + "viewLisa.unt_mis_acq, " + "viewLisa.qta_cnf, " + "viewLisa.colli_x_pedane, " - + "viewLisa.prz_ven_sug, " + "viewLisa.tipo_variazione, " + "Convert(datetime, " + UtilityDB.valueDateToString(dataOraImport, CommonConstants.DATETIME_FORMAT_YMD) + ") as data_agg_prz, " + "viewLisa.perc_oneri, " @@ -229,11 +231,11 @@ public class ImportListiniAcquistoApuliaCarrefourService { + " ORDER BY viewLisa.cod_alis, viewLisa.data_iniz "; - + List righeListino = new ArrayList<>(); List mtbLisaData = new ResultSetMapper() .mapQuerySetToList(conn, sql, MtbLisaData.class, OperationType.INSERT); if (mtbLisaData != null) { - entityList.addAll(mtbLisaData); + righeListino.addAll(mtbLisaData); } if (setup.get("IMPORT_VAR_FUTURE").equalsIgnoreCase("S")) { @@ -263,12 +265,12 @@ public class ImportListiniAcquistoApuliaCarrefourService { mtbLisaData = new ResultSetMapper() .mapQuerySetToList(conn, sql, MtbLisaData.class, OperationType.INSERT); if (mtbLisaData != null) { - entityList.addAll(mtbLisaData); + righeListino.addAll(mtbLisaData); } List listCond = - Stream.of(entityList) - .filter(x->((MtbLisaData) x).getQtaCnf() != null ) + Stream.of(righeListino) + .filter(x->x.getQtaCnf() != null ) .map(lisa -> { String whereCond = "mtb_lisa.cod_art_for = " + UtilityDB.valueToString(((MtbLisaData) lisa).getCodArtFor()) + " AND " + @@ -288,16 +290,15 @@ public class ImportListiniAcquistoApuliaCarrefourService { for(HashMap l: datiLisa) { String codArtForDb = UtilityHashMap.getValueIfExists(l, "cod_art_for"); BigDecimal rapConvDb = UtilityHashMap.getValueIfExists(l, "rap_conv"); - List list = Stream.of(entityList) - .filter(x -> x instanceof MtbLisaData) - .filter(x -> ((MtbLisaData) x).getCodArtFor().equalsIgnoreCase(codArtForDb) && - ((MtbLisaData) x).getQtaCnf() != null + List list = Stream.of(righeListino) + .filter(x -> x.getCodArtFor().equalsIgnoreCase(codArtForDb) && + x.getQtaCnf() != null ).toList(); - for (EntityBase e:list) { - entityList.remove(e); - BigDecimal qtaCnf = ((MtbLisaData) e).getQtaCnf().multiply(rapConvDb); - ((MtbLisaData) e).setQtaCnf(qtaCnf); - entityList.add(e); + for (MtbLisaData e:list) { + righeListino.remove(e); + BigDecimal qtaCnf = e.getQtaCnf().multiply(rapConvDb); + e.setQtaCnf(qtaCnf); + righeListino.add(e); } } } @@ -330,9 +331,7 @@ public class ImportListiniAcquistoApuliaCarrefourService { + " ORDER BY cod_alis, data_iniz "; List atbListLogImport = new ResultSetMapper().mapQuerySetToList(conn, sql, AtbListLogImport.class, OperationType.INSERT_OR_UPDATE); - if (atbListLogImport != null) { - entityList.addAll(atbListLogImport); - } + //cancellazione tabella temporanea Boolean existView = UtilityDB.existDatabaseObject(conn, viewName, TypeDbObject.VIEW); @@ -343,34 +342,57 @@ public class ImportListiniAcquistoApuliaCarrefourService { psDelete.close(); } - if (entityList.size() > 0) { - Stream.of(entityList).filter(x -> x instanceof MtbLisaData) + //salvataggio testate listini + if ( atbList != null ) + UtilityEntity.throwEntitiesException(entityProcessor.processEntityList(atbList, multiDBTransactionManager, false)); + + if (righeListino != null && righeListino.size() > 0) { + //Salvataggio righe + Stream.of(righeListino) .forEach( - x -> ((MtbLisaData) x) - .setPrzVenSug(UtilityBigDecimal.isNull(((MtbLisaData) x).getPrzVenSug(), BigDecimal.ZERO)) + x -> x + .setPrzVenSug(UtilityBigDecimal.isNull(x.getPrzVenSug(), BigDecimal.ZERO)) .setPerc1(BigDecimal.ZERO) .setPerc2(BigDecimal.ZERO) .setPerc3(BigDecimal.ZERO) .setPerc4(BigDecimal.ZERO) - .setPercOneri(UtilityBigDecimal.isNull(((MtbLisaData) x).getPercOneri(), BigDecimal.ZERO)) - .setValOneri(UtilityBigDecimal.isNull(((MtbLisaData) x).getValOneri(), BigDecimal.ZERO)) - .setPercPromo(UtilityBigDecimal.isNull(((MtbLisaData) x).getPercPromo(), BigDecimal.ZERO)) - .setValPromo(UtilityBigDecimal.isNull(((MtbLisaData) x).getValPromo(), BigDecimal.ZERO)) + .setPercOneri(UtilityBigDecimal.isNull(x.getPercOneri(), BigDecimal.ZERO)) + .setValOneri(UtilityBigDecimal.isNull(x.getValOneri(), BigDecimal.ZERO)) + .setPercPromo(UtilityBigDecimal.isNull(x.getPercPromo(), BigDecimal.ZERO)) + .setValPromo(UtilityBigDecimal.isNull(x.getValPromo(), BigDecimal.ZERO)) ); - int limitArt = 1000; - AtomicInteger counter = new AtomicInteger(); - List> list = Stream.of(entityList) - .chunkBy(x -> counter.getAndIncrement() / limitArt).toList(); - List entityRet = new ArrayList<>(); - for (List e : list) { - entityRet.addAll(importAnagListiniService.importAnagListinoAcq(e, "V", null, null, false, false)); + + List>> listini = + Stream.of(righeListino) + .groupBy( + x -> { + AtbListData atbListData = + new AtbListData() + .setCodAlis(x.getCodAlis()) + .setDataIniz(x.getDataIniz()) + .setDataFine(x.getDataFine()); + atbListData.setOperation(OperationType.INSERT); + return atbListData; + } + ).toList(); + + + for (Map.Entry> listino : listini) { + AtbListData atbListData = listino.getKey(); + atbListData.setMtbLisaData(listino.getValue()); + UtilityEntity.throwEntityException(entityProcessor.processEntity(atbListData, multiDBTransactionManager)); } } else { throw new Exception("Non ci sono listini da aggiornare"); } - return entityList; + if (atbListLogImport != null) + UtilityEntity.throwEntitiesException(entityProcessor.processEntityList(atbListLogImport, multiDBTransactionManager, false)); + + logger.info("Importazione " + type + " - " + format + " terminata"); + + return entityRet; } private void importFileCsv(Connection conn, String pathFile, String type, String format, Map setup) throws Exception {