Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -173,6 +173,12 @@ public class MtbLisaData extends EntityBase {
|
||||
@MapToTable(value = "rag_soc_prod")
|
||||
private String ragSocProd;
|
||||
|
||||
@MapToTable(value = "data_iniz_sell_out")
|
||||
private LocalDate dataInizSellOut;
|
||||
|
||||
@MapToTable(value = "data_fine_sell_out")
|
||||
private LocalDate dataFineSellOut;
|
||||
|
||||
private BigDecimal percPromo1;
|
||||
|
||||
private BigDecimal percPromo2;
|
||||
@@ -680,6 +686,24 @@ public class MtbLisaData extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataInizSellOut() {
|
||||
return dataInizSellOut;
|
||||
}
|
||||
|
||||
public MtbLisaData setDataInizSellOut(LocalDate dataInizSellOut) {
|
||||
this.dataInizSellOut = dataInizSellOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LocalDate getDataFineSellOut() {
|
||||
return dataFineSellOut;
|
||||
}
|
||||
|
||||
public MtbLisaData setDataFineSellOut(LocalDate dataFineSellOut) {
|
||||
this.dataFineSellOut = dataFineSellOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbLisaPromo getMtbLisaPromo() {
|
||||
return mtbLisaPromo;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import it.integry.ems.Import.dto.AnomalieDTO;
|
||||
import it.integry.ems.Import.dto.ImportRequestDTO;
|
||||
import it.integry.ems.file_formatter.csv.CsvMapper;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
@@ -13,9 +14,13 @@ import it.integry.ems_model.config.EmsRestConstants;
|
||||
import it.integry.ems_model.db.ResultSetMapper;
|
||||
import it.integry.ems_model.entity.AtbListData;
|
||||
import it.integry.ems_model.entity.MtbLisaData;
|
||||
import it.integry.ems_model.entity.MtbLisvData;
|
||||
import it.integry.ems_model.entity.VtbListData;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.*;
|
||||
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;
|
||||
@@ -26,6 +31,7 @@ import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
@@ -34,10 +40,11 @@ public class ImportApuliaPromoService {
|
||||
private SetupGest setupGest = new SetupGest();
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@Autowired
|
||||
private EntityProcessor entityProcessor;
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
public List<EntityBase> importPromo(ImportRequestDTO request, String type, String format, List<AnomalieDTO> anomalie) throws Exception {
|
||||
if (request == null || request.getRawContent() == null) {
|
||||
throw new Exception("Nessun csv da importare.");
|
||||
@@ -59,126 +66,136 @@ public class ImportApuliaPromoService {
|
||||
promozioni = Stream.of(promozioni).filterNot(x -> listiniDaEscludere.contains(x.getPartIva())).toList();
|
||||
}
|
||||
|
||||
String codAlis = null;
|
||||
if ( !UtilityString.isNullOrEmpty(request.getWhereCond())) {
|
||||
codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(
|
||||
String codAlisFiltro = null;
|
||||
if (!UtilityString.isNullOrEmpty(request.getWhereCond())) {
|
||||
codAlisFiltro = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(
|
||||
connection,
|
||||
UtilityDB.addwhereCond("select cod_alis from atb_list", request.getWhereCond(), true, false));
|
||||
|
||||
if (codAlisFiltro == null) {
|
||||
anomalie.add(AnomalieDTO.warning("Codice Listino non trovato "));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
List<EntityBase> entityList = new ArrayList<>();
|
||||
List<MtbLisaData> mtbLisaDataList = new ArrayList<>();
|
||||
for (PromoDto promozione : promozioni) {
|
||||
try {
|
||||
Map<String, List<PromoDto>> promoPerLisa = promozioni.stream().collect(Collectors.groupingBy(PromoDto::getPartIva));
|
||||
for (String partitaIva : promoPerLisa.keySet()) {
|
||||
String codAlis;
|
||||
if (UtilityString.isNullOrEmpty(codAlisFiltro)) {
|
||||
partitaIva = UtilityString.FillString(partitaIva, '0', 11, "L");
|
||||
String sql =
|
||||
Query.format("select cod_alis from atb_list where part_iva_forn = %s", partitaIva);
|
||||
codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
|
||||
|
||||
String partitaIva = promozione.getPartIva();
|
||||
if (UtilityString.isNullOrEmpty(codAlis)) {
|
||||
partitaIva = UtilityString.FillString(partitaIva, '0', 11, "L");
|
||||
String sql =
|
||||
Query.format("select cod_alis from atb_list where part_iva_forn = %s", partitaIva);
|
||||
codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
|
||||
|
||||
if (codAlis == null) {
|
||||
codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection,
|
||||
String.format("select cod_alis from gtb_anag inner join atb_forn on gtb_anag.cod_anag = atb_forn.cod_anag where atb_forn.flag_stato = 'A' AND gtb_anag.part_iva = '%s'", partitaIva)
|
||||
);
|
||||
}
|
||||
if (codAlis == null) {
|
||||
codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection,
|
||||
String.format("select cod_alis from gtb_anag inner join atb_forn on gtb_anag.cod_anag = atb_forn.cod_anag where atb_forn.flag_stato = 'A' AND gtb_anag.part_iva = '%s'", partitaIva)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (codAlis == null) {
|
||||
anomalie.add(AnomalieDTO.warning("Nessun listino trovato per partita iva " + partitaIva));
|
||||
continue;
|
||||
}
|
||||
|
||||
String sql =
|
||||
"SELECT art.cod_mart, art.cod_art_for\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN mtb_lisa art ON mtb_lisa.cod_mart = art.cod_mart AND mtb_lisa.cod_alis = art.cod_alis\n" +
|
||||
"WHERE mtb_lisa.cod_art_for = " + UtilityDB.valueToString(promozione.getCodArtForn()) + "\n" +
|
||||
" AND mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + "\n" +
|
||||
"UNION " +
|
||||
"SELECT art.cod_mart, art.cod_art_for\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN mtb_lisa art ON mtb_lisa.cod_barre = art.cod_barre AND mtb_lisa.cod_alis = art.cod_alis\n" +
|
||||
"WHERE mtb_lisa.cod_art_for = " + UtilityDB.valueToString(promozione.getCodArtForn()) + "\n" +
|
||||
" AND mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + "\n" +
|
||||
" AND mtb_lisa.cod_barre is not null \n" +
|
||||
"SELECT art.cod_mart, art.cod_art_for\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN mtb_lisa art ON mtb_lisa.descr_art_forn = art.descr_art_forn AND mtb_lisa.cod_alis = art.cod_alis\n" +
|
||||
"WHERE mtb_lisa.cod_art_for = " + UtilityDB.valueToString(promozione.getCodArtForn()) + "\n" +
|
||||
" AND mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + "\n" +
|
||||
" AND mtb_lisa.descr_art_forn is not null \n";
|
||||
|
||||
List<MtbLisaData> mtbLisaData = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbLisaData.class, OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
if (mtbLisaData == null || mtbLisaData.isEmpty()) {
|
||||
mtbLisaData = new ArrayList<>();
|
||||
MtbLisaData lisa = new MtbLisaData()
|
||||
.setCodArtFor(promozione.getCodArtForn());
|
||||
lisa.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
mtbLisaData.add(lisa);
|
||||
|
||||
}
|
||||
|
||||
LocalDate dataIniz = promozione.getDataIniz();
|
||||
LocalDate dataFine = promozione.getDataFine();
|
||||
|
||||
for (MtbLisaData lisa : mtbLisaData) {
|
||||
//Verifichiamo se esiste una promozione contemporanea nel file
|
||||
LocalDate finalDataIniz = dataIniz;
|
||||
String finalCodAlis = codAlis;
|
||||
Optional<MtbLisaData> first = mtbLisaDataList.stream()
|
||||
.filter(x ->
|
||||
x.getCodArtFor().equalsIgnoreCase(lisa.getCodArtFor()) &&
|
||||
x.getCodAlis().equalsIgnoreCase(finalCodAlis) &&
|
||||
x.getDataIniz().isBefore(finalDataIniz) &&
|
||||
x.getDataFine().isAfter(finalDataIniz))
|
||||
.findFirst();
|
||||
|
||||
if (first.isPresent()) {
|
||||
dataIniz = first.get().getDataFine();
|
||||
dataIniz = dataIniz.plusDays(1);
|
||||
} else {
|
||||
sql =
|
||||
Query.format(
|
||||
"SELECT atb_list_data.data_fine\n" +
|
||||
"FROM atb_list_data\n" +
|
||||
" INNER JOIN mtb_lisa_data ON atb_list_data.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" atb_list_data.versione = mtb_lisa_data.versione\n" +
|
||||
"WHERE atb_list_data.cod_alis = %s \n" +
|
||||
" AND atb_list_data.data_fine IS NOT NULL\n" +
|
||||
" AND mtb_lisa_data.cod_art_for = %s\n" +
|
||||
" AND %s BETWEEN atb_list_data.data_iniz AND atb_list_data.data_fine",
|
||||
codAlis,
|
||||
lisa.getCodArtFor(),
|
||||
dataIniz);
|
||||
|
||||
LocalDate dataFinePromo = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
if (dataFinePromo != null && dataFinePromo.equals(dataFine)) {
|
||||
dataIniz = dataFinePromo;
|
||||
dataIniz = dataIniz.plusDays( 1);
|
||||
}
|
||||
}
|
||||
|
||||
lisa
|
||||
.setNote(EmsRestConstants.NULL)
|
||||
.setPercPromo1(promozione.getSconto1())
|
||||
.setPercPromo2(promozione.getSconto2())
|
||||
.setPercPromo3(promozione.getSconto3())
|
||||
.setDataIniz(dataIniz)
|
||||
.setDataFine(dataFine)
|
||||
.setCodAlis(codAlis);
|
||||
}
|
||||
|
||||
mtbLisaDataList.addAll(mtbLisaData);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
anomalie.add(AnomalieDTO.error(e));
|
||||
} else {
|
||||
codAlis = codAlisFiltro;
|
||||
}
|
||||
|
||||
for (PromoDto promozione : promoPerLisa.get(partitaIva)) {
|
||||
try {
|
||||
String sql =
|
||||
"SELECT art.cod_mart, art.cod_art_for\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN mtb_lisa art ON mtb_lisa.cod_mart = art.cod_mart AND mtb_lisa.cod_alis = art.cod_alis\n" +
|
||||
"WHERE mtb_lisa.cod_art_for = " + UtilityDB.valueToString(promozione.getCodArtForn()) + "\n" +
|
||||
" AND mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + "\n" +
|
||||
"UNION " +
|
||||
"SELECT art.cod_mart, art.cod_art_for\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN mtb_lisa art ON mtb_lisa.cod_barre = art.cod_barre AND mtb_lisa.cod_alis = art.cod_alis\n" +
|
||||
"WHERE mtb_lisa.cod_art_for = " + UtilityDB.valueToString(promozione.getCodArtForn()) + "\n" +
|
||||
" AND mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + "\n" +
|
||||
" AND mtb_lisa.cod_barre is not null \n" +
|
||||
"SELECT art.cod_mart, art.cod_art_for\n" +
|
||||
"FROM mtb_lisa\n" +
|
||||
" INNER JOIN mtb_lisa art ON mtb_lisa.descr_art_forn = art.descr_art_forn AND mtb_lisa.cod_alis = art.cod_alis\n" +
|
||||
"WHERE mtb_lisa.cod_art_for = " + UtilityDB.valueToString(promozione.getCodArtForn()) + "\n" +
|
||||
" AND mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + "\n" +
|
||||
" AND mtb_lisa.descr_art_forn is not null \n";
|
||||
|
||||
List<MtbLisaData> mtbLisaData = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbLisaData.class, OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
if (mtbLisaData == null || mtbLisaData.isEmpty()) {
|
||||
mtbLisaData = new ArrayList<>();
|
||||
MtbLisaData lisa = new MtbLisaData()
|
||||
.setCodArtFor(promozione.getCodArtForn());
|
||||
lisa.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
mtbLisaData.add(lisa);
|
||||
|
||||
}
|
||||
|
||||
LocalDate dataIniz = UtilityString.parseLocalDate(promozione.getDataIniz());
|
||||
LocalDate dataFine = UtilityString.parseLocalDate(promozione.getDataFine());
|
||||
for (MtbLisaData lisa : mtbLisaData) {
|
||||
//Verifichiamo se esiste una promozione contemporanea nel file
|
||||
LocalDate finalDataIniz = dataIniz;
|
||||
String finalCodAlis = codAlis;
|
||||
Optional<MtbLisaData> first = mtbLisaDataList.stream()
|
||||
.filter(x ->
|
||||
x.getCodArtFor().equalsIgnoreCase(lisa.getCodArtFor()) &&
|
||||
x.getCodAlis().equalsIgnoreCase(finalCodAlis) &&
|
||||
x.getDataIniz().isBefore(finalDataIniz) &&
|
||||
x.getDataFine().isAfter(finalDataIniz))
|
||||
.findFirst();
|
||||
|
||||
if (first.isPresent()) {
|
||||
dataIniz = first.get().getDataFine();
|
||||
dataIniz = dataIniz.plusDays(1);
|
||||
} else {
|
||||
sql =
|
||||
Query.format(
|
||||
"SELECT atb_list_data.data_fine \n" +
|
||||
"FROM atb_list_data\n" +
|
||||
" INNER JOIN mtb_lisa_data ON atb_list_data.cod_alis = mtb_lisa_data.cod_alis AND\n" +
|
||||
" atb_list_data.versione = mtb_lisa_data.versione\n" +
|
||||
"WHERE atb_list_data.cod_alis = %s \n" +
|
||||
" AND atb_list_data.data_fine IS NOT NULL\n" +
|
||||
" AND mtb_lisa_data.cod_art_for = %s\n" +
|
||||
" AND %s BETWEEN atb_list_data.data_iniz AND atb_list_data.data_fine",
|
||||
codAlis,
|
||||
lisa.getCodArtFor(),
|
||||
dataIniz);
|
||||
|
||||
LocalDate dataFinePromo = UtilityLocalDate.localDateFromDate(UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql));
|
||||
if (dataFinePromo != null && dataFinePromo.equals(dataFine)) {
|
||||
dataIniz = dataFinePromo;
|
||||
dataIniz = dataIniz.plusDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
lisa
|
||||
.setNote(EmsRestConstants.NULL)
|
||||
.setPercPromo1(promozione.getSconto1())
|
||||
.setPercPromo2(promozione.getSconto2())
|
||||
.setPercPromo3(promozione.getSconto3())
|
||||
.setDataInizSellOut(promozione.getDataInizSellOut() != null ? UtilityString.parseLocalDate(promozione.getDataInizSellOut()) : null)
|
||||
.setDataFineSellOut(promozione.getDataFineSellOut() != null ? UtilityString.parseLocalDate(promozione.getDataFineSellOut()) : null)
|
||||
.setDataIniz(dataIniz)
|
||||
.setDataFine(dataFine)
|
||||
.setCodAlis(codAlis);
|
||||
}
|
||||
|
||||
mtbLisaDataList.addAll(mtbLisaData);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
anomalie.add(AnomalieDTO.error(e));
|
||||
logger.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!mtbLisaDataList.isEmpty()) {
|
||||
@@ -188,6 +205,8 @@ public class ImportApuliaPromoService {
|
||||
.setCodAlis(x.getCodAlis())
|
||||
.setDataIniz(x.getDataIniz())
|
||||
.setDataFine(x.getDataFine())
|
||||
.setDataInizSellOut(x.getDataInizSellOut())
|
||||
.setDataFineSellOut(x.getDataFineSellOut())
|
||||
.setFlagTipoPromo("E")
|
||||
.setNote("INTERNA");
|
||||
atbListData.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
@@ -246,6 +265,12 @@ public class ImportApuliaPromoService {
|
||||
@JsonProperty("NOTE")
|
||||
private String note;
|
||||
|
||||
@JsonProperty("DT INIZIO SELL OUT")
|
||||
private String dataInizSellOut;
|
||||
|
||||
@JsonProperty("DT FINE SELL OUT")
|
||||
private String dataFineSellOut;
|
||||
|
||||
public String getNumOffCedi() {
|
||||
return numOffCedi;
|
||||
}
|
||||
@@ -258,20 +283,22 @@ public class ImportApuliaPromoService {
|
||||
return partIva;
|
||||
}
|
||||
|
||||
public String getDataInizString() {
|
||||
public String getDataIniz() {
|
||||
return dataIniz;
|
||||
}
|
||||
|
||||
public LocalDate getDataIniz() throws Exception {
|
||||
return UtilityString.parseLocalDate(dataIniz);
|
||||
public PromoDto setDataIniz(String dataIniz) {
|
||||
this.dataIniz = dataIniz;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataFineString() {
|
||||
public String getDataFine() {
|
||||
return dataFine;
|
||||
}
|
||||
|
||||
public LocalDate getDataFine() throws Exception {
|
||||
return UtilityString.parseLocalDate(dataFine);
|
||||
public PromoDto setDataFine(String dataFine) {
|
||||
this.dataFine = dataFine;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodArtCedi() {
|
||||
@@ -301,5 +328,35 @@ public class ImportApuliaPromoService {
|
||||
public String getNote() {
|
||||
return note;
|
||||
}
|
||||
|
||||
public String getDataFineSellOut() {
|
||||
return dataFineSellOut;
|
||||
}
|
||||
|
||||
public PromoDto setDataFineSellOut(String dataFineSellOut) {
|
||||
this.dataFineSellOut = dataFineSellOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataInizSellOut() {
|
||||
return dataInizSellOut;
|
||||
}
|
||||
|
||||
public PromoDto setDataInizSellOut(String dataInizSellOut) {
|
||||
this.dataInizSellOut = dataInizSellOut;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof PromoDto)) return false;
|
||||
PromoDto promoDto = (PromoDto) o;
|
||||
return Objects.equals(getNumOffCedi(), promoDto.getNumOffCedi()) && Objects.equals(getCodFornCedi(), promoDto.getCodFornCedi()) && Objects.equals(getPartIva(), promoDto.getPartIva()) && Objects.equals(getDataIniz(), promoDto.getDataIniz()) && Objects.equals(getDataFine(), promoDto.getDataFine()) && Objects.equals(getCodArtCedi(), promoDto.getCodArtCedi()) && Objects.equals(getCodArtForn(), promoDto.getCodArtForn()) && Objects.equals(getSconto1(), promoDto.getSconto1()) && Objects.equals(getSconto2(), promoDto.getSconto2()) && Objects.equals(getSconto3(), promoDto.getSconto3()) && Objects.equals(getScontoVal(), promoDto.getScontoVal()) && Objects.equals(getNote(), promoDto.getNote()) && Objects.equals(getDataInizSellOut(), promoDto.getDataInizSellOut()) && Objects.equals(getDataFineSellOut(), promoDto.getDataFineSellOut());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getNumOffCedi(), getCodFornCedi(), getPartIva(), getDataIniz(), getDataFine(), getCodArtCedi(), getCodArtForn(), getSconto1(), getSconto2(), getSconto3(), getScontoVal(), getNote(), getDataInizSellOut(), getDataFineSellOut());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user