Nuove procedure di import ed export listini infragruppo

This commit is contained in:
2024-12-12 17:22:19 +01:00
parent 0a26474785
commit 584b392f8c
11 changed files with 408 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ public enum EntityExportType {
RAPPORTINI("RAPPORTINI"),
VARIAZIONE_PV("VARIAZIONE PV"),
LISTINI_ACQUISTO("LISTINI ACQUISTO"),
LISTINI_VENDITA("LISTINI VENDITA"),
COLLI("COLLI"),
SCADENZE("SCADENZE");

View File

@@ -0,0 +1,40 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241212123011 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Carelli_Format)) return;
executeStatement("update vtb_list_data set data_trasmissione = vtb_list_data.data_iniz\n" +
"FROM vtb_list_data left outer join \n" +
"(SELECT cod_alis, cast(atb_list_data.note as int) as versione, data_iniz from carelli.dbo.atb_list_data\n" +
"where cod_alis in (select *\n" +
"\tfrom dbo.ParseStringIntoArray((\n" +
"\tselect value\n" +
"\tFROM WTB_GEST_SETUP_USER WHERE USER_NAME = 'CARELLI' AND gest_name = 'EXPORT_LISTINI VENDITA' AND\n" +
"\tsection = 'LISTINO_INFRAGRUPPO' and key_section = 'LISTINI_DA_ESPORTARE'),'|')) \n" +
"\tand atb_list_data.note is not null\n" +
"\tand IsNumeric(atb_list_data.note) = 1 ) atb_list_data on vtb_list_data.cod_vlis = atb_list_data.cod_alis\n" +
"and vtb_list_data.versione = atb_list_data.versione\n" +
"WHERE vtb_list_data.cod_vlis in (select *\n" +
"\tfrom dbo.ParseStringIntoArray((\n" +
"\tselect value\n" +
"\tFROM WTB_GEST_SETUP_USER WHERE USER_NAME = 'CARELLI' AND gest_name = 'EXPORT_LISTINI VENDITA' AND\n" +
"\tsection = 'LISTINO_INFRAGRUPPO' and key_section = 'LISTINI_DA_ESPORTARE'),'|')) AND \n"+
"(atb_list_data.cod_alis is not null or vtb_list_data.data_iniz < '2024/01/01')"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241212123614 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("EXPORT_LISTINI VENDITA", "LISTINO_INFRAGRUPPO", "IMPORT_REST", "S",
null, false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,49 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241212131944 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "ATTIVO", "N",
"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "EMAIL_FOR_LOG", null,
"Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "FILE_FILTER", null,
"Inserire il criterio di filtro dei file o il nome del file specifio (seguire la sintassi di java)", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "GG_CANC_FILE", null,
"Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "IMPORT_REST", "S",
"Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "LISTENING", "N",
"Se LISTENIG = 'N' la procedura di importazione non si potrà mai mettere in ascolto sulla directory perchè nella procedura vengono prese in considerazione più file.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "PATH_FILE", null,
"Directory contente i file da importare.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "PATH_FILE_IMPORTED", null,
"Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false,
false, false, false, null, false, null);
if (isCustomer(IntegryCustomer.Carelli)) {
updateSetupValue("IMPORT_LISTINI ACQUISTO", "LISTINI_INFRAGRUPPO", "ATTIVO", "S");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241212153041 extends BaseMigration implements MigrationModelInterface{
@Override
public void up()throws Exception {
if(isHistoryDB())
return;
}
@Override
public void down()throws Exception {
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241212153857 extends BaseMigration implements MigrationModelInterface{
@Override
public void up()throws Exception {
if(isHistoryDB())
return;
}
@Override
public void down()throws Exception {
}
}

View File

@@ -7,6 +7,7 @@ import it.integry.ems.export.base.EntityExporterUtility;
import it.integry.ems.export.enums.EntityExportType;
import it.integry.ems.product.export.ArticoliExporter;
import it.integry.ems.product.export.ListiniAcquistoExporter;
import it.integry.ems.product.export.ListiniVenditaExporter;
import it.integry.ems.product.importaz.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -27,6 +28,7 @@ public class EmsProductContext {
EntityImporterUtility.addTypeBinding(EntityImportType.GRIGLIA_VENDITA, GrigliaVenditaImporter.class);
EntityExporterUtility.addTypeBinding(EntityExportType.ANAGRAFICHE_ARTICOLI, ArticoliExporter.class);
EntityExporterUtility.addTypeBinding(EntityExportType.LISTINI_ACQUISTO, ListiniAcquistoExporter.class);
EntityExporterUtility.addTypeBinding(EntityExportType.LISTINI_VENDITA, ListiniVenditaExporter.class);
}
}

View File

@@ -0,0 +1,94 @@
package it.integry.ems.product.export;
import com.annimon.stream.Stream;
import it.integry.ems.document.export.DocumentiExporter;
import it.integry.ems.export.base.BaseEntityExporter;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.export.base.IEntityExporter;
import it.integry.ems.product.export.services.ExportListiniAcquistoService;
import it.integry.ems.product.export.services.ExportListiniVenditaService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.types.OperationType;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ListiniVenditaExporter extends BaseEntityExporter implements IEntityExporter {
@Override
public EntityExportResponse doExport() throws Exception {
ListiniVenditaExporter.Format enumFormat = ListiniVenditaExporter.Format.fromString(format);
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
EntityExportResponse entityExportResponse = null;
if (enumFormat != null) {
switch (enumFormat) {
case LISTINI_INFRAGRUPPO:
entityExportResponse = (ContextLoader.getCurrentWebApplicationContext().getBean(ExportListiniVenditaService.class)).listiniInfragruppo(type, format, username);
return entityExportResponse;
default:
throw new Exception(String.format("Formato %s non supportato", format));
}
} else {
throw new Exception(String.format("Formato %s non definito", format));
}
}
@Override
public void postSend(EntityExportResponse entityExportResponse) throws Exception {
List<EntityBase> entityList = new ArrayList<>();
if (entityExportResponse != null && entityExportResponse.getExtraInfo() != null && entityExportResponse.getExtraInfo() instanceof List) {
List<EntityBase> extraInfos = (ArrayList<EntityBase>) entityExportResponse.getExtraInfo();
List<VtbListData> vtbListDataList =
Stream.of(extraInfos)
.filter(x -> x instanceof VtbListData)
.map(x -> (VtbListData) x)
.toList();
for (VtbListData vtbListData : vtbListDataList) {
vtbListData.setDataTrasmissione(new Date());
vtbListData.setMtbLisvData(new ArrayList<>());
vtbListData.setOperation(OperationType.UPDATE);
entityList.add(vtbListData);
}
}
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
EntityProcessor entityProcessor = context.getBean(EntityProcessor.class);
entityProcessor.processEntityList(entityList, true);
}
public enum Format {
LISTINI_INFRAGRUPPO("LISTINO_INFRAGRUPPO");
private String text;
Format(String text) {
this.text = text;
}
public static ListiniVenditaExporter.Format fromString(String text) {
for (ListiniVenditaExporter.Format b : ListiniVenditaExporter.Format.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
public String getText() {
return this.text;
}
}
}

View File

@@ -0,0 +1,101 @@
package it.integry.ems.product.export.services;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.response.FileItem;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.AtbListData;
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.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import java.util.*;
@Service
@Scope("request")
public class ExportListiniVenditaService {
@Autowired
private SetupGest setupGest;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public EntityExportResponse listiniInfragruppo(String type, String format, String userName) throws Exception {
Map<String, String> exportSetupSection = setupGest.getExportSetupSection(multiDBTransactionManager.getPrimaryConnection(), type, format);
String elencoListini = setupGest.getSetupUser(multiDBTransactionManager.getPrimaryConnection(), "EXPORT_" + type, format, "LISTINI_DA_ESPORTARE", userName);
String sql =
"SELECT vtb_list_data.cod_vlis,\n" +
" vtb_list_data.versione,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.data_fine,\n" +
" vtb_list_data.note\n" +
"FROM vtb_list_data\n" +
"WHERE vtb_list_data.data_trasmissione is null\n";
if (!UtilityString.isNullOrEmpty(elencoListini)){
List<String> list = Arrays.asList(elencoListini.split("\\|"));
String whereCondLisv = "vtb_list_data.cod_vlis in (" + UtilityDB.listValueToString(list) + ")";
sql = UtilityDB.addwhereCond(sql,whereCondLisv, true);
}
List<VtbListData> vtbListDataList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, VtbListData.class);
for (VtbListData vtbListData :vtbListDataList){
vtbListData.setOnlyPkMaster(false);
sql =
Query.format(
"SELECT mtb_lisv_data.cod_mart,\n" +
" mtb_lisv_data.unt_mis_ven,\n" +
" mtb_lisv_data.prz_vend,\n" +
" mtb_lisv_data.perc_sco1,\n" +
" mtb_lisv_data.perc_sco2,\n" +
" mtb_lisv_data.perc_sco3,\n" +
" mtb_lisv_data.perc_sco4,\n" +
" mtb_lisv_data.perc_promo,\n" +
" mtb_lisv_data.val_promo,\n" +
" mtb_lisv_data.perc_oneri,\n" +
" mtb_lisv_data.val_oneri,\n" +
" mtb_lisv_data.tipo_variazione,\n" +
" mtb_aart.descrizione as note,\n" +
" mtb_aart.qta_cnf,\n" +
" mtb_aart.colli_pedana\n" +
"FROM mtb_lisv_data\n" +
" INNER JOIN mtb_aart ON mtb_lisv_data.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN vtb_list_data v ON mtb_lisv_data.cod_vlis = v.cod_vlis AND mtb_lisv_data.versione = v.versione\n" +
"WHERE mtb_lisv_data.cod_vlis = %s \n" +
" AND mtb_lisv_data.versione = %s ",
vtbListData.getCodVlis(),
vtbListData.getVersione()
);
List<MtbLisvData> mtbLisvData = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbLisvData.class);
vtbListData.setMtbLisvData(mtbLisvData);
}
EntityExportResponse<List<FileItem>> entityExportResponse = new EntityExportResponse<>();
if ( vtbListDataList != null && !vtbListDataList.isEmpty()) {
ResponseJSONObjectMapper objectMapper = ContextLoader.getCurrentWebApplicationContext().getBean(ResponseJSONObjectMapper.class);
String jsonString = objectMapper.writeValueAsString(vtbListDataList);
String fileName = "FORMAT_" + UtilityDate.formatDate(new Date(), "yyyyMMddHHmmss") + ".json";
FileItem file = new FileItem(fileName, jsonString);
entityExportResponse
.setResponse(new ArrayList<>())
.setExtraInfo(vtbListDataList)
.getResponse()
.add(file);
}
return entityExportResponse;
}
}

View File

@@ -3,14 +3,19 @@ package it.integry.ems.product.importaz;
import com.fasterxml.jackson.databind.JsonNode;
import it.integry.ems.Import.base.BaseEntityImporter;
import it.integry.ems.Import.base.IEntityImporter;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.order.dto.NewCliOrdDTO;
import it.integry.ems.product.importaz.service.*;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.VtbListData;
import it.integry.ems_model.utility.UtilityJSON;
import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.codec.binary.Base64;
import org.springframework.web.context.ContextLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListiniAcquistoImporter extends BaseEntityImporter<List<EntityBase>> implements IEntityImporter<List<EntityBase>> {
@@ -61,6 +66,13 @@ public class ListiniAcquistoImporter extends BaseEntityImporter<List<EntityBase>
if (result == null ) result = new ArrayList<>();
result.add(entityBase);
break;
case LISTINI_INFRAGRUPPO:
ResponseJSONObjectMapper objectMapper = getContextBean(ResponseJSONObjectMapper.class);
if ( requestDto.getRawContent() != null) {
List<VtbListData> elencoList = Arrays.asList(objectMapper.readValue((String) requestDto.getRawContent(), VtbListData[].class));
result = (ContextLoader.getCurrentWebApplicationContext().getBean(ImportListiniAcquistoService.class)).listiniInfragruppo(elencoList, type, format, anomalie);
}
break;
default:
throw new Exception("Tipo " + format + " non supportato");
@@ -78,7 +90,8 @@ public class ListiniAcquistoImporter extends BaseEntityImporter<List<EntityBase>
APULIA_CARREFOUR("APULIA_CARREFOUR"),
METALSISTEM("METALSISTEM"),
APULIA_PROMO("APULIA_PROMO"),
PAZIENZA("PAZIENZA");
PAZIENZA("PAZIENZA"),
LISTINI_INFRAGRUPPO("LISTINI_INFRAGRUPPO");
private String text;

View File

@@ -5,12 +5,16 @@ import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.order.dto.NewCliOrdDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
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.*;
@@ -128,4 +132,54 @@ public class ImportListiniAcquistoService {
return null;
}
public List<EntityBase> listiniInfragruppo(List<VtbListData> elencoList , String type, String format, List<AnomalieDTO> anomalie) throws Exception {
List<AtbListData> atbListDataList = new ArrayList<>();
for (VtbListData vtbListData: elencoList){
AtbListData atbListData
= new AtbListData()
.setCodAlis(vtbListData.getCodVlis())
.setDataIniz(vtbListData.getDataIniz())
.setDataFine(vtbListData.getDataFine())
.setCodPromo(vtbListData.getCodPromo())
.setNote(vtbListData.getVersione() + (vtbListData.getNote()==null?"":vtbListData.getNote()));
atbListData.setOperation(OperationType.INSERT);
atbListDataList.add(atbListData);
for (MtbLisvData mtbLisvData: vtbListData.getMtbLisvData()){
MtbLisaData mtbLisaData = new MtbLisaData()
.setCodArtFor(mtbLisvData.getCodMart())
.setUntMisAcq(mtbLisvData.getUntMisVen())
.setDescrArtForn(mtbLisvData.getNote())
.setQtaCnf(mtbLisvData.getQtaCnf())
.setColliPedana(mtbLisvData.getColliPedana())
.setPercOneri(mtbLisvData.getPercOneri())
.setValOneri(mtbLisvData.getValOneri())
.setPercPromo(mtbLisvData.getPercPromo())
.setValOneri(mtbLisvData.getValOneri())
.setTipoVariazione(mtbLisvData.getTipoVariazione());
if (atbListData.getCodPromo() == null){
mtbLisaData
.setPerc1(mtbLisvData.getPercSco1())
.setPerc2(mtbLisvData.getPercSco2())
.setPerc3(mtbLisvData.getPercSco3())
.setPerc4(mtbLisvData.getPercSco4());
} else {
mtbLisaData
.setPercPromo1(mtbLisvData.getPercSco1())
.setPercPromo2(mtbLisvData.getPercSco2())
.setPercPromo3(mtbLisvData.getPercSco3())
.setPercPromo4(mtbLisvData.getPercSco4());
}
mtbLisvData.setOperation(OperationType.INSERT);
atbListData.getMtbLisaData().add(mtbLisaData);
}
}
List<EntityBase> entityRet = entityProcessor.processEntityList(atbListDataList, false);
UtilityEntity.throwEntitiesException(entityRet);
return entityRet;
}
}