From 2a4e57de0d95a676798edb5176f8e4cbfc7cdb01 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 4 Jun 2024 18:00:37 +0200 Subject: [PATCH] Fix after merge --- .../service/VariazioniPvService.java | 19 -- .../service/VariazioniPvExportServices.java | 168 ++++++++---------- 2 files changed, 75 insertions(+), 112 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java index e822e7086c..2cf08541ce 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPvService.java @@ -1311,25 +1311,6 @@ public class VariazioniPvService { if (testError) throw new Exception("TEST ERROR"); - - -// -// String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), exportType, formatFile, "EMAIL_FOR_LOG"); -// int numVariazioni = variazioniPvInputDTO.getVariazioni().size(); -// if (!UtilityString.isNullOrEmpty(emailForLog) && numVariazioni > 0) { -// String oggetto = -// "Esportazione " + -// variazioniPvInputDTO.getTipoReportEnum().toString() + -// " punto vendita " + -// userName; -// -// String messaggio = oggetto + -// " avvenuta con successo." + CommonConstants.A_CAPO + -// " Sono stati esportati n. " + numVariazioni + " articoli"; -// -// -// mailService.sendMailPrimary(multiDBTransactionManager, null, null, emailForLog, null, null, oggetto, messaggio, false, false, null, null, null, false, null); -// } } } } \ No newline at end of file diff --git a/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java b/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java index a00a1c9511..eddc356f0b 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/export/service/VariazioniPvExportServices.java @@ -5,7 +5,7 @@ import com.google.common.base.Joiner; import it.integry.ems.Import.dto.AnomalieDTO; import it.integry.ems.export.base.EntityExportResponse; import it.integry.ems.file_formatter.csv.CsvMapper; -import it.integry.ems.json.JSONObjectMapper; +import it.integry.ems.json.ResponseJSONObjectMapper; import it.integry.ems.properties.EmsProperties; import it.integry.ems.response.EsitoType; import it.integry.ems.response.ServiceRestResponse; @@ -18,14 +18,10 @@ import it.integry.ems.service.HttpRestWrapper; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityDirs; import it.integry.ems.utility.UtilityFile; -import it.integry.ems_model.base.EntityBase; -import it.integry.ems_model.entity.NtbVariazioniExportLog; import it.integry.ems_model.entity.WtbUsersInfo; import it.integry.ems_model.service.SetupGest; -import it.integry.ems_model.types.OperationType; import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDate; -import it.integry.ems_model.utility.UtilityHashMap; import it.integry.ems_model.utility.UtilityString; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; @@ -45,6 +41,8 @@ import javax.xml.transform.stream.StreamSource; import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.*; @@ -59,62 +57,59 @@ public class VariazioniPvExportServices { @Autowired private SetupGest setupGest; @Autowired - private JSONObjectMapper jsonObjectMapper; - + private ResponseJSONObjectMapper jsonObjectMapper; @Autowired - private VariazioniPvService variazioniPvService; - - - public EntityExportResponse xmlDialogo(String type, String format, String whereCond, JsonNode jsonBody, WtbUsersInfo wtbUsersInfo) throws Exception { - String fileXml; - List extraInfo = new ArrayList<>(); + private VariazioniPvService variazioniPVService; + public EntityExportResponse xmlDialogo(String type, String format, String whereCond, JsonNode jsonBody, WtbUsersInfo wtbUsersInfo, List anomalie) throws Exception { + String fileXml = null; + VariazioniPvInputDTO variazioniPvDTO = new VariazioniPvInputDTO(); EntityExportResponse> entityExportResponse = new EntityExportResponse<>(); - entityExportResponse.setResponse(new ArrayList<>()); - + entityExportResponse.setResponse(new ArrayList()); + boolean isSingleLisv = false; Map setup = setupGest.getExportSetupSection(multiDBTransactionManager.getPrimaryConnection(), type, format); - VariazioniPvInputDTO variazioniPvDTO = null; if (jsonBody != null) { - JSONObjectMapper mapper = new JSONObjectMapper(); + ResponseJSONObjectMapper mapper = new ResponseJSONObjectMapper(); variazioniPvDTO = mapper.readValue(jsonBody.toString(), VariazioniPvInputDTO.class); } - if (variazioniPvDTO != null && UtilityString.isNullOrEmpty(variazioniPvDTO.getFileXml())) { - boolean existJson = (variazioniPvDTO.getVariazioni() != null || variazioniPvDTO.getVariazioni().size() > 0); + if (UtilityString.isNullOrEmpty(variazioniPvDTO.getFileXml())) { if (variazioniPvDTO.getDataValidita() == null) { - variazioniPvDTO.setDataValidita( UtilityDate.RelativeDateTime(new Date(), 1)); + variazioniPvDTO.setDataValidita(UtilityDate.RelativeDateTime(new Date(), 1)); } if (variazioniPvDTO.getTipoReportEnum() == null) { variazioniPvDTO.setTipoReportEnum(VariazioniReportType.VARIAZIONI); - } - if (!existJson) { - if (!UtilityString.isNullOrEmpty(whereCond) && UtilityString.isNullOrEmpty(variazioniPvDTO.getWhereCondArt())) { - variazioniPvDTO.setWhereCondArt(whereCond); - } else if (UtilityString.isNullOrEmpty(whereCond) && UtilityString.isNullOrEmpty(variazioniPvDTO.getWhereCondArt()) && - wtbUsersInfo != null) { - String query = - "SELECT cod_vlis " + - " FROM wtb_depo INNER JOIN mtb_depo ON wtb_depo.cod_mdep = mtb_depo.cod_mdep " + - " WHERE wtb_depo.user_name = " + UtilityDB.valueToString(wtbUsersInfo.getUserName()); - String codVlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query); + if (!UtilityString.isNullOrEmpty(whereCond) && UtilityString.isNullOrEmpty(variazioniPvDTO.getWhereCondArt())) { + variazioniPvDTO.setWhereCondArt(whereCond); + } else if (UtilityString.isNullOrEmpty(whereCond) && UtilityString.isNullOrEmpty(variazioniPvDTO.getWhereCondArt()) && + wtbUsersInfo != null) { + String query = + "SELECT cod_vlis " + + " FROM wtb_depo INNER JOIN mtb_depo ON wtb_depo.cod_mdep = mtb_depo.cod_mdep " + + " WHERE wtb_depo.user_name = " + UtilityDB.valueToString(wtbUsersInfo.getUserName()); + PreparedStatement ps = multiDBTransactionManager.prepareStatement(query); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + String codVlis = rs.getString(1); if (!UtilityString.isNullOrEmpty(codVlis)) { whereCond = "vtb_list.cod_vlis = " + UtilityDB.valueToString(codVlis); - variazioniPvDTO.setWhereCondArt(whereCond); + variazioniPvDTO.setWhereCondLisv(whereCond); } - } + rs.close(); + ps.close(); } - fileXml = variazioniPvService.variazionePrezzoPVXml(variazioniPvDTO); + + fileXml = variazioniPVService.variazionePrezzoPVXml(variazioniPvDTO); } else { + //fileXml = new String(Base64.decodeBase64(variazioniPvDTO.getFileXml()), "UTF-8"); fileXml = variazioniPvDTO.getFileXml(); - logger.trace(String.format(VariazioniPvExportServices.class.getSimpleName() + " %s %s", variazioniPvDTO.getCodVlis(), variazioniPvDTO.getTipoReport())); } - boolean isSingleLisv = false; if (!UtilityString.isNullOrEmpty(fileXml)) { JAXBContext jaxbContext = JAXBContext.newInstance(ReportType.class); Source source = new StreamSource(new StringReader(fileXml)); @@ -140,7 +135,7 @@ public class VariazioniPvExportServices { String query = "SELECT wtb_users.user_name, " + " wtb_users.password, " + - " case when charindex('FILE', priority) < 0 THEN 'S' ELSE flag_remote_save END as salvataggio_remoto" + + " case when charindex('FILE', priority) < 0 THEN 'S' ELSE flag_remote_save END " + " FROM wtb_users INNER JOIN wtb_users_info ON wtb_users.user_name = wtb_users_info.user_name " + " INNER JOIN wtb_depo on wtb_users.user_name = wtb_depo.user_name " + " WHERE wtb_users.key_group = '10' AND " + @@ -148,47 +143,55 @@ public class VariazioniPvExportServices { " wtb_users_info.export_type = " + UtilityDB.valueToString(type) + " AND " + " wtb_users_info.format_file = " + UtilityDB.valueToString(format); - HashMap datiUtente = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBPv.getPrimaryConnection(), query); + PreparedStatement ps = multiDBPv.prepareStatement(query); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + String userName = rs.getString(1); + String password = rs.getString(2); + String salvataggioRemoto = rs.getString(3); - if (!UtilityHashMap.isPresent(datiUtente)) - throw new Exception(String.format("Nessun utente trovato per il punto vendita %s", fileVariazioniDTO.getCodVlis())); + if ("N".equalsIgnoreCase(salvataggioRemoto)) { + throw new Exception(String.format("Impossobile esportare le variazioni del punto vendita %s. Non è attivo il salvataggio in remoto del file.", listino.getCodMdep())); + } - String userName = UtilityHashMap.getValueIfExists(datiUtente, "user_name"); - String password = UtilityHashMap.getValueIfExists(datiUtente, "password"); - String salvataggioRemoto = UtilityHashMap.getValueIfExists(datiUtente, "salvataggio_remoto", "N"); + Marshaller marshaller = jaxbContext.createMarshaller(); + //marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); + //marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); - if ("N".equalsIgnoreCase(salvataggioRemoto)) - throw new Exception(String.format("Impossobile esportare le variazioni del punto vendita %s. Non è attivo il salvataggio in remoto del file.", listino.getCodMdep())); + StringWriter fileXmlListino = new StringWriter(); + marshaller.marshal(fileVariazioniDTO, fileXmlListino); + //xmlStreamWriter.writeEndDocument(); + String xmlVariazioni = fileXmlListino.toString(); + //variazioniPvDTO.setFileXml(Base64.encodeBase64String(xmlVariazioni.getBytes("UTF-8"))); + variazioniPvDTO.setFileXml(xmlVariazioni); + StringBuilder jsonResponse = new StringBuilder(); + String url = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "DATI_AZIENDA", "WEBSERVICE", "WS_ENDPOINT_REST"); + if (UtilityString.isNullOrEmpty(url)) { + url = "localhost:8080"; + } + HashMap param = new HashMap(); + param.put("profileDb", profileDB); + param.put("tipoReport", variazioniPvDTO.getTipoReport()); + param.put("dataValidita", new SimpleDateFormat("dd/MM/yyyy").format(variazioniPvDTO.getDataValidita())); + int requestStatusCode = HttpRestWrapper.callGeneric("http://" + url + "/ems-api/exportVariazioniPv", userName, password, xmlVariazioni, ContentType.TEXT_PLAIN, jsonResponse, param); - Marshaller marshaller = jaxbContext.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); - - StringWriter fileXmlListino = new StringWriter(); - marshaller.marshal(fileVariazioniDTO, fileXmlListino); - String xmlVariazioni = fileXmlListino.toString(); - variazioniPvDTO.setFileXml(xmlVariazioni); - StringBuilder jsonResponse = new StringBuilder(); - String url = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "DATI_AZIENDA", "WEBSERVICE", "WS_ENDPOINT_REST"); - if (UtilityString.isNullOrEmpty(url)) url = "localhost:8080"; - - HashMap param = new HashMap<>(); - param.put("profileDb", profileDB); - param.put("type", type); - param.put("format", format); - JSONObjectMapper mapper = new JSONObjectMapper(); - String json = mapper.writeValueAsString(variazioniPvDTO); - int requestStatusCode = HttpRestWrapper.callGeneric("http://" + url + "/ems-api/export", userName, password, json, ContentType.APPLICATION_JSON, jsonResponse, param); - - if (requestStatusCode != 200) { - throw new Exception(String.format("Non è stato possibile chiamare il servizio di esportazione variazioni (Status: %d)", requestStatusCode)); - } else { - ServiceRestResponse responseObject = jsonObjectMapper.readValue(jsonResponse.toString(), ServiceRestResponse.class); - if (responseObject.getEsito() == EsitoType.KO) { - throw new Exception(responseObject.getErrorMessage()); + if (requestStatusCode != 200) { + throw new Exception(String.format("Non è stato possibile chiamare il servizio di esportazione variazioni (Status: %d)", requestStatusCode)); + } else { + ServiceRestResponse responseObject = jsonObjectMapper.readValue(jsonResponse.toString(), ServiceRestResponse.class); + if (responseObject.getEsito() == EsitoType.KO) { + throw new Exception(responseObject.getErrorMessage()); + } } } + + rs.close(); + ps.close(); multiDBPv.closeAll(); + } + } } @@ -212,33 +215,12 @@ public class VariazioniPvExportServices { if (!UtilityString.isNullOrEmpty(wtbUsersInfo.getFileName())) { fileName = UtilityString.replaceSubString(wtbUsersInfo.getFileName(), "%", fileName); } - - boolean saveLog = setupGest.getExportSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), type, format, "SAVE_LOG"); - - if ( saveLog ) { - String json = null; - if (variazioniPvDTO != null && variazioniPvDTO.getVariazioni() != null ){ - JSONObjectMapper objectMapper = new JSONObjectMapper(); - json = objectMapper.writeValueAsString(variazioniPvDTO.getVariazioni()); - } - NtbVariazioniExportLog ntbVariazioniExportLog = - new NtbVariazioniExportLog() - .setDataExport(new Date()) - .setCodVlis(variazioniPvDTO.getCodVlis()) - .setFormatFile(format) - .setJsonString(json) - .setXmlFileName(fileName + ".xml") - .setUserName(variazioniPvDTO.getUserName()); - ntbVariazioniExportLog.setOperation(OperationType.INSERT); - extraInfo.add(ntbVariazioniExportLog); - } fileName = pathFile + File.separator + fileName + ".xml"; File file = new File(fileName); FileOutputStream fos = new FileOutputStream(file); IOUtils.write(fileXml.toString().getBytes("UTF-8"), fos); fos.flush(); IOUtils.closeQuietly(fos); - entityExportResponse.setExtraInfo(extraInfo); entityExportResponse.getResponse().add(file); } @@ -259,7 +241,7 @@ public class VariazioniPvExportServices { } if (jsonBody != null) { - JSONObjectMapper mapper = new JSONObjectMapper(); + ResponseJSONObjectMapper mapper = new ResponseJSONObjectMapper(); variazioniPvDTO = mapper.readValue(jsonBody.toString(), VariazioniPvInputDTO.class); } if (variazioniPvDTO.getDataValidita() == null) { @@ -269,7 +251,7 @@ public class VariazioniPvExportServices { variazioniPvDTO.setTipoReportEnum(VariazioniReportType.VARIAZIONI); } - ReportType variazioni = variazioniPvService.variazionePrezzoPV(variazioniPvDTO); + ReportType variazioni = variazioniPVService.variazionePrezzoPV(variazioniPvDTO); if (variazioni.getCodVlis().size() == 1) { List content = variazioni.getCodVlis().get(0).getContent();