Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2024-07-15 17:22:46 +02:00
42 changed files with 1872 additions and 456 deletions

View File

@@ -545,8 +545,7 @@ public class EmsController {
}
@RequestMapping(value = EmsRestConstants.PATH_EXPORT, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse export(
public @ResponseBody ServiceRestResponse export(
HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam(value = EmsRestConstants.TYPE) String typeExport,
@@ -554,44 +553,39 @@ public class EmsController {
@RequestParam(required = false, defaultValue = "false") Boolean binaryDownload,
@RequestParam(required = false, defaultValue = "true") boolean headless,
@RequestBody(required = false) JsonNode body) throws Exception {
ServiceRestResponse sr = null;
try {
EntityExportResponse<?> entityExportResponse = emsServices.export(typeExport, formatExport, body, headless);
EntityExportResponse<?> entityExportResponse = emsServices.export(typeExport, formatExport, body, headless);
sr = new ServiceRestResponse(EsitoType.OK);
if (entityExportResponse != null) {
ServiceRestResponse sr = ServiceRestResponse.createPositiveResponse();
if (entityExportResponse != null) {
if (binaryDownload) {
List<DownloadFileDto> downloadableFileList = new ArrayList<>();
for (EntityExportedFile exportedFile : (List<EntityExportedFile>) entityExportResponse.getResponse()) {
downloadableFileList.add(downloadFileHandlerService.generateDownloadItem(exportedFile.getFile()));
}
sr.setJsonObject(downloadableFileList);
} else if (entityExportResponse.isResponseToB64()) {
List<File> listaFile = new ArrayList<>();
for (EntityExportedFile exportedFile : (List<EntityExportedFile>) entityExportResponse.getResponse()) {
listaFile.add(exportedFile.getFile());
}
sr.setJsonObject(EncodedB64File.fromFileList(listaFile));
} else {
sr.setJsonObject(entityExportResponse.getResponse());
if (binaryDownload) {
List<DownloadFileDto> downloadableFileList = new ArrayList<>();
for (EntityExportedFile exportedFile : (List<EntityExportedFile>) entityExportResponse.getResponse()) {
downloadableFileList.add(downloadFileHandlerService.generateDownloadItem(exportedFile.getFile()));
}
if (!UtilityString.isNullOrEmpty(entityExportResponse.getMessageContent())) {
sr.initMessageList();
sr.getMessages().add(new MessageDTO()
.setLevel(MessageDTO.Level.INFO)
.setText(entityExportResponse.getMessageContent()));
sr.setJsonObject(downloadableFileList);
} else if (entityExportResponse.isResponseToB64()) {
List<File> listaFile = new ArrayList<>();
for (EntityExportedFile exportedFile : (List<EntityExportedFile>) entityExportResponse.getResponse()) {
listaFile.add(exportedFile.getFile());
}
sr.setJsonObject(EncodedB64File.fromFileList(listaFile));
} else {
sr.setJsonObject(entityExportResponse.getResponse());
}
if (!UtilityString.isNullOrEmpty(entityExportResponse.getMessageContent())) {
sr.initMessageList();
sr.getMessages()
.add(new MessageDTO()
.setLevel(MessageDTO.Level.INFO)
.setText(entityExportResponse.getMessageContent()));
}
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
sr = new ServiceRestResponse(EsitoType.KO, multiDBTransactionManager.getPrimaryDatasource().getProfile(), e);
}
return sr;
@@ -926,6 +920,7 @@ public class EmsController {
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam(required = false) String idAttach,
@RequestParam(required = false) String descrizione,
@RequestParam(required = false) String typeAttach,
@RequestPart() MultipartFile[] files
) {
try {
@@ -940,6 +935,7 @@ public class EmsController {
files[0].getBytes(),
descrizione,
files[0].getContentType(),
typeAttach,
null, null);
stbFilesAttached.setOnlyPkMaster(false);

View File

@@ -288,8 +288,6 @@ public abstract class BaseMigration implements MigrationModelInterface {
String codQuery, boolean flagUserView, boolean flagSetupDepo, boolean flagSetupUserWeb,
boolean flagTipoJson, boolean flagTipoColore, String tipoSetup, boolean flagMultiValue,
String query) throws Exception {
if (existsSetup(gestName, section, keySection))
return;
if (!UtilityString.isNullOrEmpty(query) && UtilityString.isNullOrEmpty(codQuery)) {
codQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(),

View File

@@ -0,0 +1,65 @@
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_20240708111056 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomerDb(IntegryCustomerDB.Carelli_GestFood, IntegryCustomerDB.Carelli_Panimal))
executeStatement("insert into stb_gest_setup\n" +
"select *\n" +
"from carelli.dbo.stb_gest_setup\n" +
"where gest_name = 'W_VVARIAZ_PREZZI_DISP'\n" +
"and not exists (select * from stb_gest_setup s where s.gest_name = stb_gest_setup.gest_name and s.section = stb_gest_setup.section and s.key_section = stb_gest_setup.key_section )",
"update stb_gest_setup set value = s.value, flag_sync = 'S'\n" +
"from carelli.dbo.stb_gest_setup s inner join stb_gest_setup on s.gest_name = stb_gest_setup.gest_name and s.section = stb_gest_setup.section and s.key_section = stb_gest_setup.key_section\n" +
"where s.gest_name = 'W_VVARIAZ_PREZZI_DISP'",
"insert into stb_gest_setup_depo\n" +
"select stb_gest_setup_depo.*\n" +
"from carelli.dbo.stb_gest_setup \n" +
"inner join carelli.dbo.stb_gest_setup_depo on stb_gest_setup_depo.gest_name = stb_gest_setup.gest_name and stb_gest_setup_depo.section = stb_gest_setup.section and stb_gest_setup_depo.key_section = stb_gest_setup.key_section\n" +
"where stb_gest_setup.gest_name = 'W_VVARIAZ_PREZZI_DISP'\n" +
"and stb_gest_setup.flag_setup_depo = 'S'\n" +
"except \n" +
"select * from stb_gest_setup_depo",
"update stb_gest_setup_depo\n" +
"set value = s.value\n" +
"from stb_gest_setup_depo\n" +
"inner join (select stb_gest_setup_depo.*\n" +
"from carelli.dbo.stb_gest_setup \n" +
"inner join carelli.dbo.stb_gest_setup_depo on stb_gest_setup_depo.gest_name = stb_gest_setup.gest_name and stb_gest_setup_depo.section = stb_gest_setup.section and stb_gest_setup_depo.key_section = stb_gest_setup.key_section\n" +
"where stb_gest_setup.gest_name = 'W_VVARIAZ_PREZZI_DISP'\n" +
"and stb_gest_setup.flag_setup_depo = 'S') s on stb_gest_setup_depo.gest_name = s.gest_name and stb_gest_setup_depo.section = s.section and stb_gest_setup_depo.key_section = s.key_section\n" +
"and stb_gest_setup_depo.cod_mdep = s.cod_mdep\n",
"insert into wtb_gest_setup_user\n" +
"select wtb_gest_setup_user.*\n" +
"from carelli.dbo.stb_gest_setup \n" +
"inner join carelli.dbo.wtb_gest_setup_user on wtb_gest_setup_user.gest_name = stb_gest_setup.gest_name and wtb_gest_setup_user.section = stb_gest_setup.section and wtb_gest_setup_user.key_section = stb_gest_setup.key_section\n" +
"where stb_gest_setup.gest_name = 'W_VVARIAZ_PREZZI_DISP'\n" +
"and stb_gest_setup.flag_setup_user_web = 'S'\n" +
"and exists (select * from stb_user where stb_user.user_name = wtb_gest_setup_user.user_name)\n" +
"except \n" +
"select * from wtb_gest_setup_user",
"update wtb_gest_setup_user\n" +
"set value = s.value\n" +
"from wtb_gest_setup_user\n" +
"inner join (select wtb_gest_setup_user.*\n" +
"from carelli.dbo.stb_gest_setup \n" +
"inner join carelli.dbo.wtb_gest_setup_user on wtb_gest_setup_user.gest_name = stb_gest_setup.gest_name and wtb_gest_setup_user.section = stb_gest_setup.section and wtb_gest_setup_user.key_section = stb_gest_setup.key_section\n" +
"where stb_gest_setup.gest_name = 'W_VVARIAZ_PREZZI_DISP'\n" +
"and stb_gest_setup.flag_setup_depo = 'S') s on wtb_gest_setup_user.gest_name = s.gest_name and wtb_gest_setup_user.section = s.section and wtb_gest_setup_user.key_section = s.key_section\n" +
"and wtb_gest_setup_user.user_name = s.user_name");
}
@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.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240708130221 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomerDb(IntegryCustomerDB.Carelli_Carelli, IntegryCustomerDB.Carelli_GestFood, IntegryCustomerDB.Carelli_Panimal))
updateSetupValue("EXPORT_VARIAZIONE PV", "XML_DIALOGO", "SAVE_LOG", "S");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
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_20240711122559 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomer(IntegryCustomer.RossoGargano))
value = "ROSSO_GARGANO_EXCHANGE";
createSetup("PVM","PIAN_ACC_ROSSG","PROFILE_DB_CERT",value,"profilo db con le viste di scambio sinfo one",null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240712133359 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table mtb_aart_link add constraint fk_mtb_aart_link_stb_files_attached foreign key (id_attach) references stb_files_attached (id_attach)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -133,7 +133,7 @@ public class AccountingBusinessLogic {
SetupGest setupGest = new SetupGest();
HashMap<String, String> setup = setupGest.getSetupSection(conn, "CTB_SCAD", "COD_PAGA");
BigDecimal ritenuta = (BigDecimal) result.get("importo_rit_acc");
BigDecimal ritenuta = ((BigDecimal) result.get("importo_rit_acc")).abs();
if (!UtilityBigDecimal.isNullOrZero(ritenuta)) {
ritenuta = ritenuta.divide(testata.getCambioDiviCont()).setScale(5, RoundingMode.HALF_UP);
@@ -157,7 +157,7 @@ public class AccountingBusinessLogic {
scadenze.add(ctbScad);
}
BigDecimal enasarco = (BigDecimal) result.get("importo_enasarco");
BigDecimal enasarco = ((BigDecimal) result.get("importo_enasarco")).abs();
if (!UtilityBigDecimal.isNullOrZero(enasarco)) {
enasarco = enasarco.divide(testata.getCambioDiviCont()).setScale(5, RoundingMode.HALF_UP);

View File

@@ -8,7 +8,6 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import it.integry.annotations.PostContextConstruct;
import it.integry.annotations.PostWebServerConstruct;
import it.integry.ems.schedule.new_cron_job.dto.AutomatedOperationTypeEnum;
import it.integry.ems.schedule.new_cron_job.dto.AutomatedOperationsWrapper;
@@ -92,10 +91,9 @@ public class AutomatedOperationHandlerComponent {
} catch (Exception ex) {
logger.error("Automated operation: POST-CONSTRUCT", ex);
if(UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) return;
if (UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) return;
try {
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(settingsModel.getDefaultProfile());
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(settingsModel.getDefaultProfile())) {
Azienda azienda = Azienda.getDefaultAzienda(multiDBTransactionManager.getPrimaryConnection());
mailService.sendSystemWarningLog("[" + azienda.getNomeDitta() + "][" + UtilityServer.getHostName() + "] Operazioni pianificate",

View File

@@ -5,7 +5,6 @@ import com.annimon.stream.Stream;
import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostWebServerConstruct;
import it.integry.ems.schedule.new_cron_job.dto.AutomatedOperationTypeEnum;
import it.integry.ems.schedule.new_cron_job.dto.operations.ExportAutomatedOperationDTO;
import it.integry.ems.schedule.new_cron_job.dto.operations.ServiceCallAutomatedOperationDTO;
import it.integry.ems.schedule.new_cron_job.dto.operations.base_classes.BaseAutomatedOperationDTO;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
@@ -13,11 +12,11 @@ import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.utility.UtilityDB;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.ContextLoader;
import java.util.ArrayList;
@@ -82,6 +81,7 @@ public class DefaultAutomatedOperationHandlerComponent {
if (!jobExists) {
ServiceCallAutomatedOperationDTO serviceCallAutomatedOperationDTO = new ServiceCallAutomatedOperationDTO()
.setMethodName("objectStorageOrphanFilesCleaner")
.setMethodType(RequestMethod.POST)
.setProfileDb(activeConnection.getProfileName());
serviceCallAutomatedOperationDTO
.setCronTrigger("0 0 6 * * SUN")
@@ -111,6 +111,7 @@ public class DefaultAutomatedOperationHandlerComponent {
if (!jobExists) {
ServiceCallAutomatedOperationDTO serviceCallAutomatedOperationDTO = new ServiceCallAutomatedOperationDTO()
.setMethodName("chkAutofattura")
.setMethodType(RequestMethod.POST)
.setProfileDb(settingsModel.getDefaultProfile());
serviceCallAutomatedOperationDTO
.setCronTrigger("0 0 09 1/1 * ?")
@@ -147,6 +148,7 @@ public class DefaultAutomatedOperationHandlerComponent {
ServiceCallAutomatedOperationDTO serviceCallAutomatedOperationDTO =
new ServiceCallAutomatedOperationDTO()
.setMethodName("passaggioAnno")
.setMethodType(RequestMethod.POST)
.setProfileDb(activeConnection.getProfileName());
serviceCallAutomatedOperationDTO
.setCronTrigger("00 10 10 * 11-12 *")
@@ -243,6 +245,7 @@ public class DefaultAutomatedOperationHandlerComponent {
if (!jobExists) {
ServiceCallAutomatedOperationDTO serviceCallAutomatedOperationDTO = new ServiceCallAutomatedOperationDTO()
.setMethodName("exportServerInfoISCC")
.setMethodType(RequestMethod.POST)
.setProfileDb(settingsModel.getDefaultProfile());
serviceCallAutomatedOperationDTO
.setCronTrigger("0 0 0/1 1/1 * *")
@@ -279,6 +282,7 @@ public class DefaultAutomatedOperationHandlerComponent {
if (!jobExists) {
ServiceCallAutomatedOperationDTO serviceCallAutomatedOperationDTO = new ServiceCallAutomatedOperationDTO()
.setMethodName("removeFpxInvioFiles")
.setMethodType(RequestMethod.POST)
.setProfileDb(profileDb);
serviceCallAutomatedOperationDTO
.setCronTrigger("0 0 22 * * ?")
@@ -306,6 +310,7 @@ public class DefaultAutomatedOperationHandlerComponent {
if (!jobExists) {
ServiceCallAutomatedOperationDTO serviceCallAutomatedOperationDTO = new ServiceCallAutomatedOperationDTO()
.setMethodName("chkInvioFE")
.setMethodType(RequestMethod.POST)
.setProfileDb(settingsModel.getDefaultProfile());
serviceCallAutomatedOperationDTO
.setCronTrigger("0 0 09 1/1 * ?")

View File

@@ -485,12 +485,24 @@ public class EmsServices {
}
}
public StbFilesAttached uploadStbFilesAttached(@Nullable String idAttach,
@Nonnull String filename,
@Nonnull byte[] fileContent,
@Nullable String descrizione,
@Nullable String mimeType,
@Nullable MrlPartitaMagAttached mrlPartitaMagAttached,
@Nullable Date datetimeAttach) throws Exception {
return uploadStbFilesAttached(idAttach, filename, fileContent,descrizione,mimeType, null, mrlPartitaMagAttached, datetimeAttach);
}
public StbFilesAttached uploadStbFilesAttached(@Nullable String idAttach,
@Nonnull String filename,
@Nonnull byte[] fileContent,
@Nullable String descrizione,
@Nullable String mimeType,
@Nullable String typeAttach,
@Nullable MrlPartitaMagAttached mrlPartitaMagAttached,
@Nullable Date datetimeAttach) throws Exception {
@@ -525,6 +537,7 @@ public class EmsServices {
.setDatetimeAttach(datetimeAttach != null ? datetimeAttach : new Date())
.setFileSize(new BigDecimal(fileContent.length))
.setMimeType(calcMimeType)
.setTypeAttach(typeAttach)
.setThumbnailContent(thumbContent);
stbFilesAttached.setOperation(OperationType.INSERT_OR_UPDATE);

View File

@@ -6,6 +6,7 @@ import it.integry.ems.properties.EmsProperties;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.exception.ExportException;
import it.integry.ems_model.exception.InternalRestCallException;
import it.integry.ems_model.utility.UtilityServer;
import it.integry.ems_model.utility.UtilityString;
@@ -41,6 +42,7 @@ public class HttpRestWrapper {
@Autowired
private EmsProperties properties;
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@@ -225,9 +227,40 @@ public class HttpRestWrapper {
return response;
}
public Object callInternalExport(String profileDb, String username, String type, String format, Entity<?> entity) throws Exception {
final String endPoint = String.format("http://localhost:%s/ems-api/", UtilityServer.getLocalServerPort());
final Client client = ClientBuilder.newClient();
final WebTarget resource = client.target(endPoint)
.path(EmsRestConstants.PATH_EXPORT);
Response response = resource
.queryParam(CommonConstants.PROFILE_DB, profileDb)
.queryParam(EmsRestConstants.TYPE, type)
.queryParam(EmsRestConstants.FORMAT, format)
.request()
//.header("Authorization", "Basic " + auth)
.header("username", username)
.post(entity);
int status = response.getStatus();
if(status != 200)
throw new InternalRestCallException(status);
String stringResponse = response.readEntity(String.class);
final ServiceRestResponse serviceRestResponse = jsonObjectMapper.readValue(stringResponse, ServiceRestResponse.class);
if (serviceRestResponse.getEsito() == EsitoType.OK || serviceRestResponse.getEsito() == EsitoType.WARNING) {
return serviceRestResponse.getJsonObject();
} else {
throw new ExportException(serviceRestResponse.getErrorMessage());
}
}
public static int callExport(String baseUrl, String profileDb, String username, String password, String type, String format, Entity<?> entity, StringBuilder bodyResponse) {
String auth = RestUtil.generateAuth(username, password);
final Client client = ClientBuilder.newClient();
final WebTarget resource = client.target(baseUrl)
@@ -238,7 +271,7 @@ public class HttpRestWrapper {
.queryParam(EmsRestConstants.TYPE, type)
.queryParam(EmsRestConstants.FORMAT, format)
.request()
.header("Authorization", "Basic " + auth)
//.header("Authorization", "Basic " + auth)
.header("username", username)
.header("password", password)
.post(entity);

View File

@@ -1460,7 +1460,12 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
if (insertedIdentity < 0)
throw new Exception("Impossibile leggere il campo identity anche se è richiesto");
Field identityField = getEntityHolder().getFieldBySql(getClass().getSimpleName(), identityFieldName);
Field identityField = fields.stream()
.filter(EntityHierarchy.Field::isIdentity)
.findFirst()
.orElse(null)
.getField();
identityField.setAccessible(true);
identityField.set(this, insertedIdentity);
}

View File

@@ -36,6 +36,9 @@ public class MtbAartLink extends EntityBase {
@SqlField(value = "b64_content", nullable = true)
private String b64Content;
@SqlField(value = "id_attach", nullable = true)
private String idAttach;
public MtbAartLink() {
super();
}
@@ -79,4 +82,14 @@ public class MtbAartLink extends EntityBase {
public void setB64Content(String b64Content) {
this.b64Content = b64Content;
}
public String getIdAttach() {
return idAttach;
}
public MtbAartLink setIdAttach(String idAttach) {
this.idAttach = idAttach;
return this;
}
}

View File

@@ -0,0 +1,108 @@
package it.integry.ems_model.entity;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.types.OperationType;
import org.kie.api.definition.type.PropertyReactive;
import com.fasterxml.jackson.annotation.JsonTypeName;
import java.util.Date;
@Master
@PropertyReactive
@Table(NtbVariazioniExportLog.ENTITY)
@JsonTypeName(NtbVariazioniExportLog.ENTITY)
public class NtbVariazioniExportLog extends EntityBase {
public NtbVariazioniExportLog() {
super();
}
private static final long serialVersionUID = 1L;
public static final String ENTITY = "ntb_variazioni_export_log";
@PK
@Identity
@SqlField(value = "id")
private Long id;
@SqlField(value = "cod_vlis")
private String codVlis;
@SqlField(value = "data_export")
private Date dataExport;
@SqlField(value = "json_string")
private String jsonString;
@SqlField(value = "user_name")
private String userName;
@SqlField(value = "format_file")
private String formatFile;
@SqlField(value = "xml_file_name")
private String xmlFileName;
@Override
public void checkPreSave() throws Exception {}
public Long getId() {
return id;
}
public NtbVariazioniExportLog setId(Long id) {
this.id = id;
return this;
}
public String getCodVlis() {
return codVlis;
}
public NtbVariazioniExportLog setCodVlis(String codVlis) {
this.codVlis = codVlis;
return this;
}
public Date getDataExport() {
return dataExport;
}
public NtbVariazioniExportLog setDataExport(Date dataExport) {
this.dataExport = dataExport;
return this;
}
public String getJsonString() {
return jsonString;
}
public NtbVariazioniExportLog setJsonString(String jsonString) {
this.jsonString = jsonString;
return this;
}
public String getUserName() {
return userName;
}
public NtbVariazioniExportLog setUserName(String userName) {
this.userName = userName;
return this;
}
public String getFormatFile() {
return formatFile;
}
public NtbVariazioniExportLog setFormatFile(String formatFile) {
this.formatFile = formatFile;
return this;
}
public String getXmlFileName() {
return xmlFileName;
}
public NtbVariazioniExportLog setXmlFileName(String xmlFileName) {
this.xmlFileName = xmlFileName;
return this;
}
}

View File

@@ -6,10 +6,9 @@ import it.integry.ems_model.annotation.PK;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.base.EntityBase;
import org.josql.expressions.BooleanExpression;
import org.kie.api.definition.type.PropertyReactive;
import java.math.BigDecimal;
import it.integry.ems_model.annotation.FK;
@Master
@PropertyReactive

View File

@@ -0,0 +1,9 @@
package it.integry.ems_model.exception;
public class ExportException extends Exception {
public ExportException(String message) {
super(message);
}
}

View File

@@ -854,7 +854,7 @@ public class SqlFieldHolder {
public static Object getSqlValueFieldAsObject(Object obj, boolean removeSpace) throws SQLServerException {
Object dato = 0;
Object dato;
if (obj != null && obj.getClass().isEnum()) {
if (IBaseEnum.class.isAssignableFrom(obj.getClass())) {

View File

@@ -147,7 +147,7 @@ public class DroolsDataCompleting {
}
String fullPath = getClass().getResource("").toString();
String singleElemsOfPath[] = fullPath.split("/");
String[] singleElemsOfPath = fullPath.split("/");
String currentFolderName = "";

View File

@@ -321,7 +321,7 @@ public class UtilityDocx {
}
} else {
replacement = textVariables.getOrDefault(variable, "");
replacement = UtilityString.isNull(textVariables.getOrDefault(variable, ""), "");
matcher.appendReplacement(sb, replacement);
}
}

View File

@@ -38,16 +38,20 @@ public class DataSheetController {
@RequestMapping(value = "compileWordFile", method = RequestMethod.GET)
public ResponseEntity<byte[]> compileWordFile (HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String codMart) throws Exception {
@RequestParam String codMart) {
AttachmentDTO attachmentDTO = dataSheetServices.compileWordFile(codMart);
try{
AttachmentDTO attachmentDTO = dataSheetServices.compileWordFile(codMart);
if (attachmentDTO != null) {
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(attachmentDTO.getMimeType()))
.contentLength(attachmentDTO.getFileSize())
.header("Content-Disposition", "attachment; filename=\"" + attachmentDTO.getFileName() + "\"")
.body(attachmentDTO.getFileContent());
if (attachmentDTO != null) {
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(attachmentDTO.getMimeType()))
.contentLength(attachmentDTO.getFileSize())
.header("Content-Disposition", "attachment; filename=\"" + attachmentDTO.getFileName() + "\"")
.body(attachmentDTO.getFileContent());
}
} catch (Exception e){
return ResponseEntity.status(420).body(e.toString().getBytes());
}
return ResponseEntity.notFound().build();

View File

@@ -15,10 +15,7 @@ import org.springframework.stereotype.Service;
import java.io.ByteArrayOutputStream;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -67,7 +64,7 @@ public class DataSheetServices {
" INNER JOIN stb_files_attached ON stb_files_attached.id_attach = mtb_aart_link.id_attach\n" +
"WHERE type_attach = 'ST'\n" +
" AND mtb_aart_link.cod_mart = " + UtilityDB.valueToString(codMart) + "\n" +
" AND mime_type LIKE '%document'";
" AND mime_type NOT LIKE '%image%'";
List<StbFilesAttached> stbFilesAttacheds = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbFilesAttached.class);
@@ -100,14 +97,22 @@ public class DataSheetServices {
HashMap<String, Object> mtb_aart = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
sql = Query.format(
"SELECT descrizione_estesa AS descrizione_estesa_eng from mtb_aart_desc WHERE cod_mart = %s and cod_lingua = 'ENG'",
codMart
List<String> codLingua =
allVariables.stream()
.filter(x -> x.startsWith("descrizione_"))
.map(x -> x.substring(x.indexOf("_") + 1))
.collect(Collectors.toList());
sql = String.format(
"SELECT 'descrizione_' + cod_lingua as cod_var, IsNull(descrizione_estesa, descrizione) as descrizione from mtb_aart_desc WHERE cod_mart = %s and cod_lingua in (%s)",
UtilityDB.valueToString(codMart),
UtilityDB.listValueToString( codLingua )
);
String descrizioneEng = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
List<HashMap<String, Object>> descrizioni = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
mtb_aart.put("descrizione_estesa_eng", descrizioneEng);
if (!descrizioni.isEmpty())
hashMaps.addAll(descrizioni);
HashMap<String, String> resultMap = new HashMap<>();
@@ -117,7 +122,7 @@ public class DataSheetServices {
}
Optional<HashMap<String, Object>> optionalMap = hashMaps.stream()
.filter(map -> map.get("cod_var").equals(variable))
.filter(map -> UtilityHashMap.<String>getValueIfExists(map, "cod_var").equalsIgnoreCase(variable.endsWith("E") ? variable.substring(0, variable.length() - 1) : variable))
.findFirst();
optionalMap.ifPresent(map -> {
@@ -145,24 +150,32 @@ public class DataSheetServices {
List<StbFilesAttached> stbFilesAttacheds = UtilityDB.executeSimpleQueryDTO(conn, sql, StbFilesAttached.class);
if (!UtilityList.isNullOrEmpty(stbFilesAttacheds)) {
Map<String, byte[]> fileBytesMap = stbFilesAttacheds.stream()
.collect(Collectors.toMap(
StbFilesAttached::getFileName,
stbFilesAttached -> {
try {
return minIOService.downloadObject(stbFilesAttached.getRefUuid(), conn);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
));
if (!UtilityList.isNullOrEmpty(stbFilesAttacheds) && !UtilityList.isNullOrEmpty(allImgVariables)) {
Map<String, Map<String, Object>> fileBytesMap = new HashMap<>();
int counter = 1;
allImgVariables.stream()
.filter(imageData -> fileBytesMap.containsKey(imageData.getFileName()))
for (StbFilesAttached stbFilesAttached : stbFilesAttacheds) {
String key = String.format("%02d", counter);
byte[] fileData = minIOService.downloadObject(stbFilesAttached.getRefUuid(), conn);
Map<String, Object> innerMap = new HashMap<>();
innerMap.put("fileName", stbFilesAttached.getFileName());
innerMap.put("byte", fileData);
fileBytesMap.put(key, innerMap);
counter++;
}
allImgVariables
.forEach(imageData -> {
imageData.setBytes(fileBytesMap.get(imageData.getFileName()));
resultMap.put(imageData.getFileName(), imageData);
String key = imageData.getFileName();
imageData.setBytes((byte[]) fileBytesMap.get(imageData.getFileName()).get("byte"));
imageData.setFileName((String) fileBytesMap.get(imageData.getFileName()).get("fileName"));
resultMap.put(key, imageData);
});
}

View File

@@ -193,7 +193,7 @@ public class ICONImportService {
return respList;
}
public List<MtbColt> returnMissionePicking(String type, String format, List<AnomalieDTO> anomalies) throws Exception {
public List<MtbColt> returnMissionePicking(String type, String format, List<AnomalieDTO> anomalies) throws Exception {
String serColloMagAuto = null, gestioneMagMaga = null,filtroOrdini = null, codAnag = null, codVdes = null, codVlis = null, codMdep = null;
Date dataColloMagAuto = null, dataOrd = null;
Integer numColloMagAuto = null, numOrd = null;

View File

@@ -107,7 +107,7 @@ public class ProductServices {
ResultSetMapper rsArt = new ResultSetMapper();
List<MtbAart> articoli = rsArt.mapQuerySetToList(dsArticoli.getConnection(), sql, MtbAart.class, OperationType.SELECT_OBJECT);
if (articoli == null || articoli.size() == 0) {
if (articoli == null || articoli.isEmpty()) {
throw new Exception("Nessun articolo trovato");
}

View File

@@ -7,6 +7,7 @@ public class CaricoProdottoFinitoDTO {
private String codMart;
private BigDecimal qtaCollo;
private Date dataOrd;
private Date dataCollo;
private String gestione;
private int numOrd;
private int rigaOrd;
@@ -169,6 +170,7 @@ public class CaricoProdottoFinitoDTO {
return this;
}
public boolean isAggiornaDettagliOrdine() {
return aggiornaDettagliOrdine;
}
@@ -195,4 +197,13 @@ public class CaricoProdottoFinitoDTO {
this.codVdes = codVdes;
return this;
}
public Date getDataCollo() {
return dataCollo;
}
public CaricoProdottoFinitoDTO setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
return this;
}
}

View File

@@ -980,6 +980,9 @@ public class MesProductionServiceV2 {
.setCodVdes(ordineLav.getCodVdes())
.setPreparatoDa(dto.getPreparatoDa())
.setNumOrd(dto.getNumOrd());
if (dto.getDataCollo()!= null){
mtbColtToInsert.setDataCollo(UtilityLocalDate.localDateFromDate(dto.getDataCollo()));
}
mtbColtToInsert.setOperation(OperationType.INSERT_OR_UPDATE);
}

View File

@@ -121,6 +121,7 @@ public class OrtoFruttaProductionService {
.setCodMdep(dto.getCodMdepProd())
.setCodJfas(dto.getCodJfas())
.setDataOrd(UtilityLocalDate.localDateToDate(dto.getDataOrd()))
.setDataCollo(UtilityLocalDate.localDateToDate(dto.getDataCollo()))
.setNumOrd(dto.getNumOrd())
.setGestione(dto.getGestione())
.setQtaCollo(dto.getQtaCol());
@@ -224,9 +225,8 @@ public class OrtoFruttaProductionService {
.setPesoLordoKg(dto.getPesoLordoCamion())
.setOperation(OperationType.INSERT_OR_UPDATE);
if (!UtilityBigDecimal.isNullOrZero(dto.getNumCnf()))
row.setNumCnf(dto.getNumCnf());
else
row.setQtaCnf(dto.getQtaCnf());
row.setNumCnf(dto.getNumCnf())
.setQtaCnf(dto.getQtaCol().divide(dto.getNumCnf(),2, RoundingMode.HALF_UP));
sql = "SELECT art_tcol.* from mtb_aart " +
" inner join mtb_tcol on mtb_tcol.cod_tcol = mtb_aart.cod_tcol_UI " +
@@ -404,7 +404,7 @@ public class OrtoFruttaProductionService {
.setDataDoc(UtilityLocalDate.localDateToDate(dto.getDataDocProvv()))
.setNumDoc(dto.getNumDocProvv())
.setCodAnag(dto.getCodAnag())
.setSerDoc(serDoc)
.setSerDoc(UtilityString.isNull(dto.getSerDocProvv(),serDoc))
.setDataOrd(dataOrd)
.setNumOrd(dto.getNumOrd())
.setCodProd(dto.getCodMart())

View File

@@ -0,0 +1,74 @@
package it.integry.ems.retail.ReportVariazioni.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.service.VariazioniPvService;
import it.integry.ems_model.utility.UtilityString;
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.security.core.userdetails.UsernameNotFoundException;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@RestController
@Scope(value = "request")
@RequestMapping("variazioni-negozi")
public class VariazioniPvController {
private final Logger logger = LogManager.getLogger();
@Autowired
private VariazioniPvService variazioniPvService;
@Autowired
private RequestDataDTO requestData;
@RequestMapping(value = "/", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse variazioniPv(
HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
return ServiceRestResponse.createPositiveResponse(variazioniPvService.calcVariazionePrezzoPV(variazioniPvInputDTO));
}
@RequestMapping(value = "/export/{codVlis}", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse exportVariazioniPerListino(
HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@PathVariable String codVlis,
@RequestBody(required = false) VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
variazioniPvService.exportByCodVlis(codVlis, variazioniPvInputDTO);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "/export", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse exportVariazioni(
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam(required = false) String tipoReport,
@RequestBody(required = false) VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
if ( !requestData.isValidUsername()){
throw new UsernameNotFoundException(requestData.getUsername());
}
if (variazioniPvInputDTO == null || UtilityString.isNullOrEmpty(variazioniPvInputDTO.getUserName())){
if (variazioniPvInputDTO == null )
variazioniPvInputDTO = new VariazioniPvInputDTO();
variazioniPvInputDTO.setUserName(requestData.getUsername());
}
variazioniPvService.exportByTipoReport(tipoReport, variazioniPvInputDTO);
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -0,0 +1,89 @@
package it.integry.ems.retail.ReportVariazioni.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date;
import java.util.List;
import java.util.Objects;
public class VariazioniDTO {
@JsonProperty("data_variazione")
private Date dataVariazione;
@JsonProperty("cod_vlis")
private String codVlis;
@JsonProperty("descrizione")
private String descrizione;
@JsonProperty("flag_list_iva_inclusa")
private String flagListIvaInclusa;
@JsonProperty("cod_mdep")
private String codMdep;
@JsonProperty("elenco_casse")
private String elencoCasse;
public Date getDataVariazione() {
return dataVariazione;
}
public VariazioniDTO setDataVariazione(Date dataVariazione) {
this.dataVariazione = dataVariazione;
return this;
}
public String getCodVlis() {
return codVlis;
}
public VariazioniDTO setCodVlis(String codVlis) {
this.codVlis = codVlis;
return this;
}
public String getDescrizione() {
return descrizione;
}
public VariazioniDTO setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getFlagListIvaInclusa() {
return flagListIvaInclusa;
}
public VariazioniDTO setFlagListIvaInclusa(String flagListIvaInclusa) {
this.flagListIvaInclusa = flagListIvaInclusa;
return this;
}
public String getCodMdep() {
return codMdep;
}
public VariazioniDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getElencoCasse() {
return elencoCasse;
}
public VariazioniDTO setElencoCasse(String elencoCasse) {
this.elencoCasse = elencoCasse;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof VariazioniDTO)) return false;
VariazioniDTO that = (VariazioniDTO) o;
return Objects.equals(getDataVariazione(), that.getDataVariazione()) && Objects.equals(getCodVlis(), that.getCodVlis()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(getFlagListIvaInclusa(), that.getFlagListIvaInclusa()) && Objects.equals(getCodMdep(), that.getCodMdep()) && Objects.equals(getElencoCasse(), that.getElencoCasse());
}
@Override
public int hashCode() {
return Objects.hash(getDataVariazione(), getCodVlis(), getDescrizione(), getFlagListIvaInclusa(), getCodMdep(), getElencoCasse());
}
}

View File

@@ -1,11 +1,26 @@
package it.integry.ems.retail.ReportVariazioni.dto.Variazioni;
package it.integry.ems.retail.ReportVariazioni.dto;
import it.integry.ems_model.annotation.MapToTable;
import java.math.BigDecimal;
import java.util.Date;
public class VariazioniDTO {
public class VariazioniDettaglioDTO {
@MapToTable("data_variazione")
private Date dataVariazione;
@MapToTable("cod_vlis")
private String codVlis;
@MapToTable("descrizione")
private String descrizione;
@MapToTable("descr_cassa")
private String descrCassa;
@MapToTable("flag_list_iva_inclusa")
private String flagListIvaInclusa;
@MapToTable("cod_mdep")
private String codMdep;
@MapToTable("elenco_casse")
private String elencoCasse;
@MapToTable (value = "annotazioni_art")
private String annotazioniArt;
@MapToTable (value = "articolo_composto")
@@ -18,8 +33,6 @@ public class VariazioniDTO {
private String codBarreImb;
@MapToTable (value = "cod_mart")
private String codMart;
@MapToTable (value = "cod_mdep")
private String codMdep;
@MapToTable (value = "cod_mgrp")
private String codMgrp;
@MapToTable (value = "cod_msfa")
@@ -28,10 +41,8 @@ public class VariazioniDTO {
private String codMsgr;
@MapToTable (value = "cod_promo")
private String codPromo;
@MapToTable (value = "cod_vlis")
private String codVlis;
@MapToTable (value = "colli_pedana")
private String colliPedana;
private BigDecimal colliPedana;
@MapToTable (value = "data_fine")
private Date dataFine;
@MapToTable (value = "data_iniz")
@@ -68,8 +79,6 @@ public class VariazioniDTO {
private String flagCalcPrzAcq;
@MapToTable (value = "flag_esponi_prz")
private String flagEsponiPrz;
@MapToTable (value = "flag_list_iva_inclusa")
private String flagListIvaInclusa;
@MapToTable (value = "flag_stato")
private String flagStato;
@MapToTable (value = "flag_tipo_promo")
@@ -138,12 +147,55 @@ public class VariazioniDTO {
private String untMis2;
@MapToTable (value = "unt_mis3")
private String untMis3;
@MapToTable (value = "libero1")
private String libero1;
@MapToTable (value = "libero2")
private String libero2;
@MapToTable (value = "posizione_articolo")
private String posizioneArticolo;
@MapToTable (value = "intercode_xml_variazioni")
private String intercodeXmlVariazioni;
public Date getDataVariazione() {
return dataVariazione;
}
public VariazioniDettaglioDTO setDataVariazione(Date dataVariazione) {
this.dataVariazione = dataVariazione;
return this;
}
public String getDescrizione() {
return descrizione;
}
public VariazioniDettaglioDTO setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getDescrCassa() {
return descrCassa;
}
public VariazioniDettaglioDTO setDescrCassa(String descrCassa) {
this.descrCassa = descrCassa;
return this;
}
public String getElencoCasse() {
return elencoCasse;
}
public VariazioniDettaglioDTO setElencoCasse(String elencoCasse) {
this.elencoCasse = elencoCasse;
return this;
}
public String getAnnotazioniArt() {
return annotazioniArt;
}
public VariazioniDTO setAnnotazioniArt(String annotazioniArt) {
public VariazioniDettaglioDTO setAnnotazioniArt(String annotazioniArt) {
this.annotazioniArt = annotazioniArt;
return this;
}
@@ -152,7 +204,7 @@ public class VariazioniDTO {
return articoloComposto;
}
public VariazioniDTO setArticoloComposto(String articoloComposto) {
public VariazioniDettaglioDTO setArticoloComposto(String articoloComposto) {
this.articoloComposto = articoloComposto;
return this;
}
@@ -161,7 +213,7 @@ public class VariazioniDTO {
return codAliq;
}
public VariazioniDTO setCodAliq(String codAliq) {
public VariazioniDettaglioDTO setCodAliq(String codAliq) {
this.codAliq = codAliq;
return this;
}
@@ -170,7 +222,7 @@ public class VariazioniDTO {
return codBarre;
}
public VariazioniDTO setCodBarre(String codBarre) {
public VariazioniDettaglioDTO setCodBarre(String codBarre) {
this.codBarre = codBarre;
return this;
}
@@ -179,7 +231,7 @@ public class VariazioniDTO {
return codBarreImb;
}
public VariazioniDTO setCodBarreImb(String codBarreImb) {
public VariazioniDettaglioDTO setCodBarreImb(String codBarreImb) {
this.codBarreImb = codBarreImb;
return this;
}
@@ -188,7 +240,7 @@ public class VariazioniDTO {
return codMart;
}
public VariazioniDTO setCodMart(String codMart) {
public VariazioniDettaglioDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
@@ -197,7 +249,7 @@ public class VariazioniDTO {
return codMdep;
}
public VariazioniDTO setCodMdep(String codMdep) {
public VariazioniDettaglioDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
@@ -206,7 +258,7 @@ public class VariazioniDTO {
return codMgrp;
}
public VariazioniDTO setCodMgrp(String codMgrp) {
public VariazioniDettaglioDTO setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
@@ -215,7 +267,7 @@ public class VariazioniDTO {
return codMsfa;
}
public VariazioniDTO setCodMsfa(String codMsfa) {
public VariazioniDettaglioDTO setCodMsfa(String codMsfa) {
this.codMsfa = codMsfa;
return this;
}
@@ -224,7 +276,7 @@ public class VariazioniDTO {
return codMsgr;
}
public VariazioniDTO setCodMsgr(String codMsgr) {
public VariazioniDettaglioDTO setCodMsgr(String codMsgr) {
this.codMsgr = codMsgr;
return this;
}
@@ -233,7 +285,7 @@ public class VariazioniDTO {
return codPromo;
}
public VariazioniDTO setCodPromo(String codPromo) {
public VariazioniDettaglioDTO setCodPromo(String codPromo) {
this.codPromo = codPromo;
return this;
}
@@ -242,16 +294,16 @@ public class VariazioniDTO {
return codVlis;
}
public VariazioniDTO setCodVlis(String codVlis) {
public VariazioniDettaglioDTO setCodVlis(String codVlis) {
this.codVlis = codVlis;
return this;
}
public String getColliPedana() {
public BigDecimal getColliPedana() {
return colliPedana;
}
public VariazioniDTO setColliPedana(String colliPedana) {
public VariazioniDettaglioDTO setColliPedana(BigDecimal colliPedana) {
this.colliPedana = colliPedana;
return this;
}
@@ -260,7 +312,7 @@ public class VariazioniDTO {
return dataFine;
}
public VariazioniDTO setDataFine(Date dataFine) {
public VariazioniDettaglioDTO setDataFine(Date dataFine) {
this.dataFine = dataFine;
return this;
}
@@ -269,7 +321,7 @@ public class VariazioniDTO {
return dataIniz;
}
public VariazioniDTO setDataIniz(Date dataIniz) {
public VariazioniDettaglioDTO setDataIniz(Date dataIniz) {
this.dataIniz = dataIniz;
return this;
}
@@ -278,7 +330,7 @@ public class VariazioniDTO {
return dataInizPromo;
}
public VariazioniDTO setDataInizPromo(Date dataInizPromo) {
public VariazioniDettaglioDTO setDataInizPromo(Date dataInizPromo) {
this.dataInizPromo = dataInizPromo;
return this;
}
@@ -287,7 +339,7 @@ public class VariazioniDTO {
return dataUltVar;
}
public VariazioniDTO setDataUltVar(Date dataUltVar) {
public VariazioniDettaglioDTO setDataUltVar(Date dataUltVar) {
this.dataUltVar = dataUltVar;
return this;
}
@@ -296,7 +348,7 @@ public class VariazioniDTO {
return descrArt;
}
public VariazioniDTO setDescrArt(String descrArt) {
public VariazioniDettaglioDTO setDescrArt(String descrArt) {
this.descrArt = descrArt;
return this;
}
@@ -305,7 +357,7 @@ public class VariazioniDTO {
return descrArtEqui;
}
public VariazioniDTO setDescrArtEqui(String descrArtEqui) {
public VariazioniDettaglioDTO setDescrArtEqui(String descrArtEqui) {
this.descrArtEqui = descrArtEqui;
return this;
}
@@ -314,7 +366,7 @@ public class VariazioniDTO {
return descrGrup;
}
public VariazioniDTO setDescrGrup(String descrGrup) {
public VariazioniDettaglioDTO setDescrGrup(String descrGrup) {
this.descrGrup = descrGrup;
return this;
}
@@ -323,7 +375,7 @@ public class VariazioniDTO {
return descrLisv;
}
public VariazioniDTO setDescrLisv(String descrLisv) {
public VariazioniDettaglioDTO setDescrLisv(String descrLisv) {
this.descrLisv = descrLisv;
return this;
}
@@ -332,7 +384,7 @@ public class VariazioniDTO {
return descrMsfa;
}
public VariazioniDTO setDescrMsfa(String descrMsfa) {
public VariazioniDettaglioDTO setDescrMsfa(String descrMsfa) {
this.descrMsfa = descrMsfa;
return this;
}
@@ -341,7 +393,7 @@ public class VariazioniDTO {
return descrPromo;
}
public VariazioniDTO setDescrPromo(String descrPromo) {
public VariazioniDettaglioDTO setDescrPromo(String descrPromo) {
this.descrPromo = descrPromo;
return this;
}
@@ -350,7 +402,7 @@ public class VariazioniDTO {
return descrSgrp;
}
public VariazioniDTO setDescrSgrp(String descrSgrp) {
public VariazioniDettaglioDTO setDescrSgrp(String descrSgrp) {
this.descrSgrp = descrSgrp;
return this;
}
@@ -359,7 +411,7 @@ public class VariazioniDTO {
return descrizioneEstesa;
}
public VariazioniDTO setDescrizioneEstesa(String descrizioneEstesa) {
public VariazioniDettaglioDTO setDescrizioneEstesa(String descrizioneEstesa) {
this.descrizioneEstesa = descrizioneEstesa;
return this;
}
@@ -368,7 +420,7 @@ public class VariazioniDTO {
return esposizioneComp;
}
public VariazioniDTO setEsposizioneComp(String esposizioneComp) {
public VariazioniDettaglioDTO setEsposizioneComp(String esposizioneComp) {
this.esposizioneComp = esposizioneComp;
return this;
}
@@ -377,7 +429,7 @@ public class VariazioniDTO {
return esposizioneCompAcq;
}
public VariazioniDTO setEsposizioneCompAcq(String esposizioneCompAcq) {
public VariazioniDettaglioDTO setEsposizioneCompAcq(String esposizioneCompAcq) {
this.esposizioneCompAcq = esposizioneCompAcq;
return this;
}
@@ -386,7 +438,7 @@ public class VariazioniDTO {
return finePromo;
}
public VariazioniDTO setFinePromo(String finePromo) {
public VariazioniDettaglioDTO setFinePromo(String finePromo) {
this.finePromo = finePromo;
return this;
}
@@ -395,7 +447,7 @@ public class VariazioniDTO {
return flagCalcPrz;
}
public VariazioniDTO setFlagCalcPrz(String flagCalcPrz) {
public VariazioniDettaglioDTO setFlagCalcPrz(String flagCalcPrz) {
this.flagCalcPrz = flagCalcPrz;
return this;
}
@@ -404,7 +456,7 @@ public class VariazioniDTO {
return flagCalcPrzAcq;
}
public VariazioniDTO setFlagCalcPrzAcq(String flagCalcPrzAcq) {
public VariazioniDettaglioDTO setFlagCalcPrzAcq(String flagCalcPrzAcq) {
this.flagCalcPrzAcq = flagCalcPrzAcq;
return this;
}
@@ -413,7 +465,7 @@ public class VariazioniDTO {
return flagEsponiPrz;
}
public VariazioniDTO setFlagEsponiPrz(String flagEsponiPrz) {
public VariazioniDettaglioDTO setFlagEsponiPrz(String flagEsponiPrz) {
this.flagEsponiPrz = flagEsponiPrz;
return this;
}
@@ -422,7 +474,7 @@ public class VariazioniDTO {
return flagListIvaInclusa;
}
public VariazioniDTO setFlagListIvaInclusa(String flagListIvaInclusa) {
public VariazioniDettaglioDTO setFlagListIvaInclusa(String flagListIvaInclusa) {
this.flagListIvaInclusa = flagListIvaInclusa;
return this;
}
@@ -431,7 +483,7 @@ public class VariazioniDTO {
return flagStato;
}
public VariazioniDTO setFlagStato(String flagStato) {
public VariazioniDettaglioDTO setFlagStato(String flagStato) {
this.flagStato = flagStato;
return this;
}
@@ -440,7 +492,7 @@ public class VariazioniDTO {
return flagTipoPromo;
}
public VariazioniDTO setFlagTipoPromo(String flagTipoPromo) {
public VariazioniDettaglioDTO setFlagTipoPromo(String flagTipoPromo) {
this.flagTipoPromo = flagTipoPromo;
return this;
}
@@ -449,7 +501,7 @@ public class VariazioniDTO {
return flagTracciabilita;
}
public VariazioniDTO setFlagTracciabilita(String flagTracciabilita) {
public VariazioniDettaglioDTO setFlagTracciabilita(String flagTracciabilita) {
this.flagTracciabilita = flagTracciabilita;
return this;
}
@@ -458,7 +510,7 @@ public class VariazioniDTO {
return ggScadPartita;
}
public VariazioniDTO setGgScadPartita(Integer ggScadPartita) {
public VariazioniDettaglioDTO setGgScadPartita(Integer ggScadPartita) {
this.ggScadPartita = ggScadPartita;
return this;
}
@@ -467,7 +519,7 @@ public class VariazioniDTO {
return idArtEqui;
}
public VariazioniDTO setIdArtEqui(String idArtEqui) {
public VariazioniDettaglioDTO setIdArtEqui(String idArtEqui) {
this.idArtEqui = idArtEqui;
return this;
}
@@ -476,7 +528,7 @@ public class VariazioniDTO {
return idPromo;
}
public VariazioniDTO setIdPromo(String idPromo) {
public VariazioniDettaglioDTO setIdPromo(String idPromo) {
this.idPromo = idPromo;
return this;
}
@@ -485,7 +537,7 @@ public class VariazioniDTO {
return ingredienti;
}
public VariazioniDTO setIngredienti(String ingredienti) {
public VariazioniDettaglioDTO setIngredienti(String ingredienti) {
this.ingredienti = ingredienti;
return this;
}
@@ -494,7 +546,7 @@ public class VariazioniDTO {
return percAliq;
}
public VariazioniDTO setPercAliq(BigDecimal percAliq) {
public VariazioniDettaglioDTO setPercAliq(BigDecimal percAliq) {
this.percAliq = percAliq;
return this;
}
@@ -503,7 +555,7 @@ public class VariazioniDTO {
return percSco1;
}
public VariazioniDTO setPercSco1(BigDecimal percSco1) {
public VariazioniDettaglioDTO setPercSco1(BigDecimal percSco1) {
this.percSco1 = percSco1;
return this;
}
@@ -512,7 +564,7 @@ public class VariazioniDTO {
return percSco2;
}
public VariazioniDTO setPercSco2(BigDecimal percSco2) {
public VariazioniDettaglioDTO setPercSco2(BigDecimal percSco2) {
this.percSco2 = percSco2;
return this;
}
@@ -521,7 +573,7 @@ public class VariazioniDTO {
return percSco3;
}
public VariazioniDTO setPercSco3(BigDecimal percSco3) {
public VariazioniDettaglioDTO setPercSco3(BigDecimal percSco3) {
this.percSco3 = percSco3;
return this;
}
@@ -530,7 +582,7 @@ public class VariazioniDTO {
return percSco4;
}
public VariazioniDTO setPercSco4(BigDecimal percSco4) {
public VariazioniDettaglioDTO setPercSco4(BigDecimal percSco4) {
this.percSco4 = percSco4;
return this;
}
@@ -539,7 +591,7 @@ public class VariazioniDTO {
return percSfrido;
}
public VariazioniDTO setPercSfrido(BigDecimal percSfrido) {
public VariazioniDettaglioDTO setPercSfrido(BigDecimal percSfrido) {
this.percSfrido = percSfrido;
return this;
}
@@ -548,7 +600,7 @@ public class VariazioniDTO {
return pesoKg;
}
public VariazioniDTO setPesoKg(BigDecimal pesoKg) {
public VariazioniDettaglioDTO setPesoKg(BigDecimal pesoKg) {
this.pesoKg = pesoKg;
return this;
}
@@ -557,7 +609,7 @@ public class VariazioniDTO {
return plu;
}
public VariazioniDTO setPlu(String plu) {
public VariazioniDettaglioDTO setPlu(String plu) {
this.plu = plu;
return this;
}
@@ -566,7 +618,7 @@ public class VariazioniDTO {
return posizione;
}
public VariazioniDTO setPosizione(String posizione) {
public VariazioniDettaglioDTO setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
@@ -575,7 +627,7 @@ public class VariazioniDTO {
return prezzoPieno;
}
public VariazioniDTO setPrezzoPieno(BigDecimal prezzoPieno) {
public VariazioniDettaglioDTO setPrezzoPieno(BigDecimal prezzoPieno) {
this.prezzoPieno = prezzoPieno;
return this;
}
@@ -584,7 +636,7 @@ public class VariazioniDTO {
return przBase;
}
public VariazioniDTO setPrzBase(BigDecimal przBase) {
public VariazioniDettaglioDTO setPrzBase(BigDecimal przBase) {
this.przBase = przBase;
return this;
}
@@ -593,7 +645,7 @@ public class VariazioniDTO {
return przPienoIva;
}
public VariazioniDTO setPrzPienoIva(BigDecimal przPienoIva) {
public VariazioniDettaglioDTO setPrzPienoIva(BigDecimal przPienoIva) {
this.przPienoIva = przPienoIva;
return this;
}
@@ -602,7 +654,7 @@ public class VariazioniDTO {
return przVend;
}
public VariazioniDTO setPrzVend(BigDecimal przVend) {
public VariazioniDettaglioDTO setPrzVend(BigDecimal przVend) {
this.przVend = przVend;
return this;
}
@@ -611,7 +663,7 @@ public class VariazioniDTO {
return przVendIva;
}
public VariazioniDTO setPrzVendIva(BigDecimal przVendIva) {
public VariazioniDettaglioDTO setPrzVendIva(BigDecimal przVendIva) {
this.przVendIva = przVendIva;
return this;
}
@@ -620,7 +672,7 @@ public class VariazioniDTO {
return qtaCnf;
}
public VariazioniDTO setQtaCnf(BigDecimal qtaCnf) {
public VariazioniDettaglioDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
@@ -629,7 +681,7 @@ public class VariazioniDTO {
return rapConv;
}
public VariazioniDTO setRapConv(BigDecimal rapConv) {
public VariazioniDettaglioDTO setRapConv(BigDecimal rapConv) {
this.rapConv = rapConv;
return this;
}
@@ -638,7 +690,7 @@ public class VariazioniDTO {
return rapConv2;
}
public VariazioniDTO setRapConv2(BigDecimal rapConv2) {
public VariazioniDettaglioDTO setRapConv2(BigDecimal rapConv2) {
this.rapConv2 = rapConv2;
return this;
}
@@ -647,7 +699,7 @@ public class VariazioniDTO {
return rapConv3;
}
public VariazioniDTO setRapConv3(BigDecimal rapConv3) {
public VariazioniDettaglioDTO setRapConv3(BigDecimal rapConv3) {
this.rapConv3 = rapConv3;
return this;
}
@@ -656,7 +708,7 @@ public class VariazioniDTO {
return repartoCassa;
}
public VariazioniDTO setRepartoCassa(String repartoCassa) {
public VariazioniDettaglioDTO setRepartoCassa(String repartoCassa) {
this.repartoCassa = repartoCassa;
return this;
}
@@ -665,7 +717,7 @@ public class VariazioniDTO {
return taraKg;
}
public VariazioniDTO setTaraKg(BigDecimal taraKg) {
public VariazioniDettaglioDTO setTaraKg(BigDecimal taraKg) {
this.taraKg = taraKg;
return this;
}
@@ -674,7 +726,7 @@ public class VariazioniDTO {
return tipoCodice;
}
public VariazioniDTO setTipoCodice(String tipoCodice) {
public VariazioniDettaglioDTO setTipoCodice(String tipoCodice) {
this.tipoCodice = tipoCodice;
return this;
}
@@ -683,7 +735,7 @@ public class VariazioniDTO {
return tipoVariazione;
}
public VariazioniDTO setTipoVariazione(String tipoVariazione) {
public VariazioniDettaglioDTO setTipoVariazione(String tipoVariazione) {
this.tipoVariazione = tipoVariazione;
return this;
}
@@ -692,7 +744,7 @@ public class VariazioniDTO {
return tipoVariazioneLisv;
}
public VariazioniDTO setTipoVariazioneLisv(String tipoVariazioneLisv) {
public VariazioniDettaglioDTO setTipoVariazioneLisv(String tipoVariazioneLisv) {
this.tipoVariazioneLisv = tipoVariazioneLisv;
return this;
}
@@ -701,7 +753,7 @@ public class VariazioniDTO {
return untMis;
}
public VariazioniDTO setUntMis(String untMis) {
public VariazioniDettaglioDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
@@ -710,7 +762,7 @@ public class VariazioniDTO {
return untMisVen;
}
public VariazioniDTO setUntMisVen(String untMisVen) {
public VariazioniDettaglioDTO setUntMisVen(String untMisVen) {
this.untMisVen = untMisVen;
return this;
}
@@ -719,7 +771,7 @@ public class VariazioniDTO {
return untMis2;
}
public VariazioniDTO setUntMis2(String untMis2) {
public VariazioniDettaglioDTO setUntMis2(String untMis2) {
this.untMis2 = untMis2;
return this;
}
@@ -728,10 +780,44 @@ public class VariazioniDTO {
return untMis3;
}
public VariazioniDTO setUntMis3(String untMis3) {
public VariazioniDettaglioDTO setUntMis3(String untMis3) {
this.untMis3 = untMis3;
return this;
}
public String getLibero1() {
return libero1;
}
public VariazioniDettaglioDTO setLibero1(String libero1) {
this.libero1 = libero1;
return this;
}
public String getLibero2() {
return libero2;
}
public VariazioniDettaglioDTO setLibero2(String libero2) {
this.libero2 = libero2;
return this;
}
public String getPosizioneArticolo() {
return posizioneArticolo;
}
public VariazioniDettaglioDTO setPosizioneArticolo(String posizioneArticolo) {
this.posizioneArticolo = posizioneArticolo;
return this;
}
public String getIntercodeXmlVariazioni() {
return intercodeXmlVariazioni;
}
public VariazioniDettaglioDTO setIntercodeXmlVariazioni(String intercodeXmlVariazioni) {
this.intercodeXmlVariazioni = intercodeXmlVariazioni;
return this;
}
}

View File

@@ -1,6 +1,7 @@
package it.integry.ems.retail.ReportVariazioni.dto.Variazioni;
package it.integry.ems.retail.ReportVariazioni.dto;
import java.util.Date;
import java.util.List;
public class VariazioniPvInputDTO {
private Date dataValidita;
@@ -13,6 +14,8 @@ public class VariazioniPvInputDTO {
private String fileXml;
private String tipoReport;
private String inviaDisattivazioni;
private String userName;
private List<VariazioniDettaglioDTO> variazioni;
public Date getDataValidita() {
return dataValidita;
@@ -23,11 +26,11 @@ public class VariazioniPvInputDTO {
return this;
}
public Type getTipoReportEnum() {
return Type.fromString(tipoReport);
public VariazioniReportType getTipoReportEnum() {
return VariazioniReportType.fromString(tipoReport);
}
public void setTipoReportEnum(Type tipoReport) {
public void setTipoReportEnum(VariazioniReportType tipoReport) {
this.tipoReport = tipoReport.getText();
}
@@ -35,8 +38,9 @@ public class VariazioniPvInputDTO {
return tipoReport;
}
public void setTipoReport(String tipoReport) {
public VariazioniPvInputDTO setTipoReport(String tipoReport) {
this.tipoReport = tipoReport;
return this;
}
public String getWhereCondArt() {
@@ -79,16 +83,18 @@ public class VariazioniPvInputDTO {
return fileXml;
}
public void setFileXml(String fileXml) {
public VariazioniPvInputDTO setFileXml(String fileXml) {
this.fileXml = fileXml;
return this;
}
public String getInviaDisattivazioni() {
return inviaDisattivazioni;
}
public void setInviaDisattivazioni(String inviaDisattivazioni) {
public VariazioniPvInputDTO setInviaDisattivazioni(String inviaDisattivazioni) {
this.inviaDisattivazioni = inviaDisattivazioni;
return this;
}
public String getCodVlis() {
@@ -100,6 +106,26 @@ public class VariazioniPvInputDTO {
return this;
}
public String getUserName() {
return userName;
}
public VariazioniPvInputDTO setUserName(String userName) {
this.userName = userName;
return this;
}
public List<VariazioniDettaglioDTO> getVariazioni() {
return variazioni;
}
public VariazioniPvInputDTO setVariazioni(List<VariazioniDettaglioDTO> variazioni) {
this.variazioni = variazioni;
return this;
}
public enum Type {
VARIAZIONI("V"),
PROMOZIONI("P"),
@@ -123,4 +149,5 @@ public class VariazioniPvInputDTO {
return this.text;
}
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.retail.ReportVariazioni.dto;
public enum VariazioniReportType {
VARIAZIONI("V"),
GRIGLIA("G"),
PROMOZIONI("P"),
LISTINO("L");
private String text;
VariazioniReportType(String text) {
this.text = text;
}
public static VariazioniReportType fromString(String text) {
for (VariazioniReportType b : VariazioniReportType.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
public String getText() {
return this.text;
}
}

View File

@@ -2,20 +2,31 @@ package it.integry.ems.retail.ReportVariazioni.service;
import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.retail.ReportVariazioni.dto.Variazioni.VariazioniPvInputDTO;
import it.integry.ems.dto.Result;
import it.integry.ems.expansion.RunnableArgsThrowable;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniDettaglioDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniReportType;
import it.integry.ems.retail.ReportVariazioni.xml.*;
import it.integry.ems.retail.dto.GrigliaAcquistoDTO;
import it.integry.ems.retail.service.GrigliaAcquistoHandlerService;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.service.MailService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.TypeDbObject;
import it.integry.ems_model.utility.*;
import kotlin.Triple;
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;
import javax.ws.rs.client.Entity;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.File;
@@ -26,83 +37,149 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class VariazioniPVService {
public class VariazioniPvService {
private final Logger logger = LogManager.getLogger();
private final String gestName = "w_vvariaz_prezzi_disp";
private final String section = "VARIAZIONI";
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private SetupGest setupGest;
@Autowired
private GrigliaAcquistoHandlerService grigliaAcquistoHandlerService;
@Autowired
private HttpRestWrapper httpRestWrapper;
@Autowired
private MailService mailService;
private HashMap<String, String> listini = new HashMap<>();
private List<GrigliaAcquistoDTO> grigliaAcquisto = new ArrayList<>();
public String variazionePrezzoPVXml(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
String xmlVariazioni = null;
ReportType fileVariazioniDTO = variazionePrezzoPV(variazioniPvDTO);
if (fileVariazioniDTO.getCodVlis() != null && fileVariazioniDTO.getCodVlis().size() > 0) {
JAXBContext jaxbContext = JAXBContext.newInstance(ReportType.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
String pathFile = UtilityDirs.getDirectoryExport(multiDBTransactionManager.getPrimaryDatasource().getDbName(), "VARIAZIONI_PV", "XML_DIALOGO").getAbsolutePath();
if (!UtilityString.isNullOrEmpty(pathFile)) {
File tempFile = new File(pathFile + "//" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ".xml");
marshaller.marshal(fileVariazioniDTO, tempFile);
}
StringWriter fileXml = new StringWriter();
marshaller.marshal(fileVariazioniDTO, fileXml);
xmlVariazioni = fileXml.toString();
} else {
if (fileVariazioniDTO.getCodVlis() == null || fileVariazioniDTO.getCodVlis().size() == 0)
throw new Exception("Non ci sono variazione nel periodo selezionato.");
}
return xmlVariazioni;
JAXBContext jaxbContext = JAXBContext.newInstance(ReportType.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
String pathFile = UtilityDirs.getDirectoryExport(multiDBTransactionManager.getPrimaryDatasource().getDbName(), "VARIAZIONI_PV", "XML_DIALOGO").getAbsolutePath();
if (!UtilityString.isNullOrEmpty(pathFile)) {
File tempFile = new File(pathFile + "//" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ".xml");
marshaller.marshal(fileVariazioniDTO, tempFile);
}
StringWriter fileXml = new StringWriter();
marshaller.marshal(fileVariazioniDTO, fileXml);
return fileXml.toString();
}
public ReportType variazionePrezzoPV(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
final String gestName = "w_vvariaz_prezzi_disp", section = "VARIAZIONI";
public List<VariazioniDettaglioDTO> calcVariazionePrezzoPV(VariazioniPvInputDTO variazioniPvDTO) throws Exception {
return calcVariazionePrezzoPV(multiDBTransactionManager, variazioniPvDTO);
}
public List<VariazioniDettaglioDTO> calcVariazionePrezzoPV(MultiDBTransactionManager mdb, VariazioniPvInputDTO variazioniPvDTO) throws Exception {
LocalDateTime startTracingTime = UtilityLocalDate.getNowTime();
// logger.trace("Calcolo variazioni: Start");
HashMap<String, String> setup = setupGest.getSetupSection(mdb.getPrimaryConnection(), gestName, section);
boolean existVariazioni = (variazioniPvDTO.getVariazioni() != null && !variazioniPvDTO.getVariazioni().isEmpty());
List<VariazioniDTO> listini = getListini(mdb, variazioniPvDTO, existVariazioni);
logger.trace("Calcolo variazioni: GetListini []");
List<VariazioniDettaglioDTO> variazioni = new ArrayList<>();
for (VariazioniDTO datiLisv : listini) {
String codMdep = UtilityString.streNull(datiLisv.getCodMdep());
HashMap<String, String> getSetupSectionDepo =
setupGest.getSetupSectionDepo(mdb.getPrimaryConnection(), gestName, section, codMdep);
String codVlisVariazioni = UtilityHashMap.getValueIfExists(getSetupSectionDepo, "COD_VLIS_VARIAZIONI");
datiLisv.setCodVlis(UtilityString.isNull(codVlisVariazioni, datiLisv.getCodVlis()));
datiLisv.setDataVariazione(variazioniPvDTO.getDataValidita());
datiLisv.setElencoCasse(getElencoCasse(mdb, codMdep));
List<VariazioniDettaglioDTO> variazioniLisv = null;
if (existVariazioni) {
variazioniLisv =
variazioniPvDTO.getVariazioni().stream()
.filter(x -> x.getCodVlis().equalsIgnoreCase(datiLisv.getCodVlis()))
.collect(Collectors.toList());
} else {
String query = getQueryVariazioni(variazioniPvDTO, setup, datiLisv.getCodVlis(), UtilityHashMap.getValueIfExists(getSetupSectionDepo, "SELEZIONA_GRIGLIE"));
variazioniLisv = UtilityDB.executeSimpleQueryDTO(mdb.getPrimaryConnection(), query, VariazioniDettaglioDTO.class);
if (variazioniLisv != null) {
variazioniLisv
.forEach(
variazioniDettaglioDTO ->
variazioniDettaglioDTO.setCodVlis(datiLisv.getCodVlis())
.setCodMdep(datiLisv.getCodMdep())
.setDataVariazione(variazioniPvDTO.getDataValidita())
.setElencoCasse(datiLisv.getElencoCasse())
);
}
}
if (variazioniLisv != null && !variazioniLisv.isEmpty())
variazioni.addAll(variazioniLisv);
logger.debug(VariazioniPvService.class.getSimpleName() +
" - getElencoArticoli Listino " + datiLisv.getCodVlis() +
": Timing " + ChronoUnit.SECONDS.between(startTracingTime, UtilityLocalDate.getNowTime()) + " secs");
}
logger.debug(VariazioniPvService.class.getSimpleName() +
" - Fine: Timing " + ChronoUnit.SECONDS.between(startTracingTime, UtilityLocalDate.getNowTime()) + " secs");
return variazioni;
}
public ReportType variazionePrezzoPV(VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
HashMap<String, String> setup = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), gestName, section);
String sql =
"SELECT vtb_list.cod_vlis, vtb_list.descrizione, vtb_list.flag_list_iva_inclusa, mtb_depo.cod_mdep " +
" FROM vtb_list INNER JOIN mtb_depo ON mtb_depo.cod_vlis = vtb_list.cod_vlis " +
" WHERE vtb_list.flag_attivo = 'S' " +
"ORDER BY vtb_list.cod_vlis ";
sql = UtilityDB.addwhereCond(sql, variazioniPvDTO.getWhereCondLisv(), false);
List<HashMap<String, Object>> listini = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
String invioIngredienti = setup.get("INVIA_INGREDIENTI_OPZ");
String colNameDescrEstesa = "descrizione_estesa";
String setupDescr = setup.get("DESCRIZIONE_ESTESA");
if (!UtilityString.isNullOrEmpty(setupDescr)) {
if (setupDescr.equalsIgnoreCase("D"))
colNameDescrEstesa = "descr_art";
else if (setupDescr.equalsIgnoreCase("B"))
colNameDescrEstesa = "descr_cassa";
}
boolean existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
ReportType fileVariazioniDTO = new ReportType();
for (HashMap<String, Object> datiLisv : listini) {
String codVlis = UtilityHashMap.getValueIfExists(datiLisv, "cod_vlis");
String descrLisv = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "descrizione"));
String flagListIvaInclusa = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "flag_list_iva_inclusa"));
String codMdep = UtilityString.streNull(UtilityHashMap.getValueIfExists(datiLisv, "cod_mdep"));
String elencoCasse = getElencoCasse(codMdep);
Date startDate = new Date();
logger.debug(VariazioniPvService.class.getSimpleName() + " - inizio : Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
for (VariazioniDTO datiLisv : listini) {
String codVlis = datiLisv.getCodVlis();
String codMdep = UtilityString.streNull(datiLisv.getCodMdep());
String elencoCasse = getElencoCasse(multiDBTransactionManager, codMdep);
HashMap<String, String> getSetupSectionDepo = setupGest.getSetupSectionDepo(multiDBTransactionManager.getPrimaryConnection(), gestName, section, codMdep);
ObjectFactory objectFactory = new ObjectFactory();
CodVlisType listinoDTO = new CodVlisType();
@@ -112,39 +189,52 @@ public class VariazioniPVService {
} else {
listinoDTO.getContent().add(codVlisVariazioni);
}
listinoDTO.setDescrizione(descrLisv);
listinoDTO.setFlagListIvaInclusa(flagListIvaInclusa);
listinoDTO.setDataVariazione(new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(variazioniPvDTO.getDataValidita()));
listinoDTO.setDescrizione(datiLisv.getDescrizione());
listinoDTO.setFlagListIvaInclusa(datiLisv.getFlagListIvaInclusa());
listinoDTO.setDataVariazione(new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(variazioniPvInputDTO.getDataValidita()));
listinoDTO.setCodMdep(codMdep);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeElencoCasse(elencoCasse));
fileVariazioniDTO.getCodVlis().add(listinoDTO);
String query = getQueryVariazioni(variazioniPvDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE"));
List<HashMap<String, Object>> elencoVar = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
boolean getVariazioneGriglia = false;
if ((variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.GRIGLIA ||
variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.LISTINO) &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) {
getVariazioneGriglia = true;
grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto();
grigliaAcquisto = Stream.of(grigliaAcquisto)
.filter(x -> x.getDataValidita().equals(variazioniPvDTO.getDataValidita()) &&
x.getCodMdep().equalsIgnoreCase(codMdep))
.toList();
List<VariazioniDettaglioDTO> elencoVar = null;
if (existVariazioni) {
elencoVar =
Stream.of(variazioniPvInputDTO.getVariazioni())
.filter(x -> x.getCodVlis().equalsIgnoreCase(datiLisv.getCodVlis()))
.toList();
} else {
String query = getQueryVariazioni(variazioniPvInputDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE"));
elencoVar = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, VariazioniDettaglioDTO.class);
}
logger.trace(VariazioniPvService.class.getSimpleName() + " - getElencoArticoli Listino " + codVlis + ": Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
if (elencoVar != null) {
boolean getVariazioneGriglia = false;
for (HashMap<String, Object> variazioni : elencoVar) {
CodMartType codMart = fillArticoloData(objectFactory,
variazioni, variazioniPvDTO, invioIngredienti, getSetupSectionDepo, codMdep, colNameDescrEstesa,
setup.get("LIBERO1"),
setup.get("LIBERO2"), getVariazioneGriglia);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeCodMart(codMart));
if ((variazioniPvInputDTO.getTipoReportEnum() == VariazioniReportType.GRIGLIA ||
variazioniPvInputDTO.getTipoReportEnum() == VariazioniReportType.LISTINO) &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null &&
getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) {
getVariazioneGriglia = true;
grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto();
grigliaAcquisto = Stream.of(grigliaAcquisto)
.filter(x -> x.getDataValidita().equals(variazioniPvInputDTO.getDataValidita()) &&
x.getCodMdep().equalsIgnoreCase(codMdep))
.toList();
}
int i = 1;
for (VariazioniDettaglioDTO variazioni : elencoVar) {
CodMartType codMart = fillArticoloData(objectFactory, variazioni, variazioniPvInputDTO, invioIngredienti, getSetupSectionDepo, codMdep, setupDescr,
setup.get("LIBERO1"),
setup.get("LIBERO2"), getVariazioneGriglia);
listinoDTO.getContent().add(objectFactory.createCodVlisTypeCodMart(codMart));
i++;
}
}
logger.trace(VariazioniPvService.class.getSimpleName() + " - creazione xml Listino " + codVlis + ": Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
}
logger.trace(VariazioniPvService.class.getSimpleName() + " - fine : Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
if (fileVariazioniDTO.getCodVlis() != null && fileVariazioniDTO.getCodVlis().size() > 0) {
@@ -155,140 +245,155 @@ public class VariazioniPVService {
return fileVariazioniDTO;
}
private CodMartType fillArticoloData(ObjectFactory objectFactory, HashMap<String, Object> var,
VariazioniPvInputDTO variazioniPvDTO,
private List<VariazioniDTO> getListini(VariazioniPvInputDTO variazioniPvDTO, boolean existVariazioni) throws Exception {
return getListini(multiDBTransactionManager, variazioniPvDTO, existVariazioni);
}
private List<VariazioniDTO> getListini(MultiDBTransactionManager mdb, VariazioniPvInputDTO variazioniPvDTO, boolean existVariazioni) throws Exception {
List<VariazioniDTO> listini;
if (existVariazioni) {
listini = variazioniPvDTO.getVariazioni().stream()
.map(x -> new VariazioniDTO()
.setCodVlis(x.getCodVlis())
.setCodMdep(x.getCodMdep())
.setDescrizione(x.getDescrizione())
.setFlagListIvaInclusa(x.getFlagListIvaInclusa()))
.distinct()
.collect(Collectors.toList());
} else {
String sql =
"SELECT vtb_list.cod_vlis, vtb_list.descrizione, vtb_list.flag_list_iva_inclusa, mtb_depo.cod_mdep " +
" FROM vtb_list INNER JOIN mtb_depo ON mtb_depo.cod_vlis = vtb_list.cod_vlis " +
" WHERE vtb_list.flag_attivo = 'S' " +
"ORDER BY vtb_list.cod_vlis ";
if (variazioniPvDTO != null) {
if (!UtilityString.isNullOrEmpty(variazioniPvDTO.getCodVlis()))
sql = UtilityDB.addwhereCond(sql, String.format("vtb_list.cod_vlis = '%s'", variazioniPvDTO.getCodVlis()), false);
sql = UtilityDB.addwhereCond(sql, variazioniPvDTO.getWhereCondLisv(), false);
}
listini = UtilityDB.executeSimpleQueryDTO(mdb.getPrimaryConnection(), sql, VariazioniDTO.class);
}
return listini;
}
private CodMartType fillArticoloData(ObjectFactory objectFactory,
VariazioniDettaglioDTO var,
VariazioniPvInputDTO variazioniPvInputDTO,
String invioIngredientiSetup,
Map<String, String> setupDepo,
String codMdep,
String colNameDescrEstesa,
String setupDescr,
String valLibero1,
String valLibero2,
boolean getVariazioneGriglia) throws Exception {
CodMartType codMartType = objectFactory.createCodMartType();
String codMart = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mart"));
String flagTipoPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tipo_promo"));
BigDecimal przPieno = UtilityHashMap.getValueIfExists(var, "prezzo_pieno");
BigDecimal przPienoIva = UtilityHashMap.getValueIfExists(var, "prz_pieno_iva");
BigDecimal przVend = UtilityHashMap.getValueIfExists(var, "prz_vend");
BigDecimal przVendIva = UtilityHashMap.getValueIfExists(var, "prz_vend_iva");
String codMart = var.getCodMart();
String flagTipoPromo = var.getFlagTipoPromo();
BigDecimal przPieno = var.getPrezzoPieno();
BigDecimal przPienoIva = var.getPrzPienoIva();
BigDecimal przVend = var.getPrzVend();
BigDecimal przVendIva = var.getPrzVendIva();
if ("P".equals(flagTipoPromo)) {
przPienoIva = przVendIva;
przPieno = przVend;
}
String dataFinePromoS = "";
Date dataFinePromo = UtilityHashMap.getValueIfExists(var, "data_fine");
if (dataFinePromo != null) {
dataFinePromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataFinePromo);
}
String dataInizPromoS = "";
Date dataInizPromo = UtilityHashMap.getValueIfExists(var, "data_iniz_promo");
if (dataInizPromo != null) {
dataInizPromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataInizPromo);
}
String dataFinePromoS = convertDateToString(var.getDataFine());
String dataInizPromoS = convertDateToString(var.getDataInizPromo());
String dataUltVarS = convertDateToString(var.getDataUltVar());
String dataAggPrzS = convertDateToString(var.getDataIniz());
String dataUltVarS = "";
Date dataUltVar = UtilityHashMap.getValueIfExists(var, "data_ult_var");
if (dataUltVar != null) {
dataUltVarS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataUltVar);
}
String dataAggPrzS = "";
Date dataAggPrz = UtilityHashMap.getValueIfExists(var, "data_iniz");
if (dataAggPrz != null) {
dataAggPrzS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(dataAggPrz);
}
String tipoVariazioneLisv = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_variazione_lisv"));
String flagStato = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_stato"));
String tipoVariazioneLisv = var.getTipoVariazioneLisv();
String flagStato = var.getFlagStato();
if ("D".equalsIgnoreCase(tipoVariazioneLisv)) {
flagStato = "I";
}
codMartType.getContent().add(codMart);
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_art"))));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis2(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis2"))));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv2(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv2"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis3(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis3"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv3(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv3"), "###0.00").replace(",", ".")));
CodMgrpType codMgrpType = objectFactory.createCodMgrpType();
codMgrpType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mgrp")));
codMgrpType.setDescrGrup(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_grup")));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizione(UtilityString.streNull(var.getDescrArt())));
String descrizioneEstesa = var.getDescrizioneEstesa();
if (!UtilityString.isNullOrEmpty(setupDescr)) {
if (setupDescr.equalsIgnoreCase("D"))
descrizioneEstesa = var.getDescrArt();
else if (setupDescr.equalsIgnoreCase("B"))
descrizioneEstesa = var.getDescrCassa();
}
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizioneEstesa(UtilityString.streNull(descrizioneEstesa)));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis2(UtilityString.streNull(var.getUntMis2())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis(UtilityString.streNull(var.getUntMis())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv2(UtilityString.bigDecimalToString(var.getRapConv2(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMis3(UtilityString.streNull(var.getUntMis3())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConv3(UtilityString.bigDecimalToString(var.getRapConv3(), "###0.00").replace(",", ".")));
CodMgrpType codMgrpType = getCodMgrpType(objectFactory, var);
codMartType.getContent().add(objectFactory.createCodMartTypeCodMgrp(codMgrpType));
CodMsgrType codMsgrType = objectFactory.createCodMsgrType();
codMsgrType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_msgr")));
codMsgrType.setDescrSgrp(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_sgrp")));
CodMsgrType codMsgrType = getCodMsgrType(objectFactory, var);
codMartType.getContent().add(objectFactory.createCodMartTypeCodMsgr(codMsgrType));
CodMsfaType codMsfaType = objectFactory.createCodMsfaType();
codMsfaType.setValue(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_msfa")));
codMsfaType.setDescrSfam(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_msfa")));
CodMsfaType codMsfaType = getCodMsfaType(objectFactory, var);
codMartType.getContent().add(objectFactory.createCodMartTypeCodMsfa(codMsfaType));
codMartType.getContent().add(objectFactory.createCodMartTypeRepartoCassa(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "reparto_cassa"))));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_variazione"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRepartoCassa(UtilityString.streNull(var.getRepartoCassa())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazione(UtilityString.streNull(var.getTipoVariazione())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneLisv(tipoVariazioneLisv));
codMartType.getContent().add(objectFactory.createCodMartTypePrzBase(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "prz_base"), "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzBase(UtilityString.bigDecimalToString(var.getPrzBase(), "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzVend(UtilityString.bigDecimalToString(przVend, "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrzVendIva(UtilityString.bigDecimalToString(przVendIva, "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePosizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "posizione"))));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMisVen(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "unt_mis_ven"))));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConvVen(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "rap_conv"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePesoKg(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "peso_kg"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagEsponiPrz(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_esponi_prz"))));
codMartType.getContent().add(objectFactory.createCodMartTypePercSfrido(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sfrido"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarreImb(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_barre_imb"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrz(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_calc_prz"))));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneCompAcq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "esposizione_comp_acq"))));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneComp(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "esposizione_comp"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrzAcq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_calc_prz_acq"))));
BigDecimal colliPedane = UtilityHashMap.getValueIfExists(var, "colli_pedana");
codMartType.getContent().add(objectFactory.createCodMartTypePosizione(UtilityString.streNull(var.getPosizione())));
codMartType.getContent().add(objectFactory.createCodMartTypeUntMisVen(UtilityString.streNull(var.getUntMisVen())));
codMartType.getContent().add(objectFactory.createCodMartTypeRapConvVen(UtilityString.bigDecimalToString(var.getRapConv(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePesoKg(UtilityString.bigDecimalToString(var.getPesoKg(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagEsponiPrz(UtilityString.streNull(var.getFlagEsponiPrz())));
codMartType.getContent().add(objectFactory.createCodMartTypePercSfrido(UtilityString.bigDecimalToString(var.getPercSfrido(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarreImb(UtilityString.streNull(var.getCodBarreImb())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrz(UtilityString.streNull(var.getFlagCalcPrz())));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneCompAcq(UtilityString.streNull(var.getEsposizioneCompAcq())));
codMartType.getContent().add(objectFactory.createCodMartTypeEsposizioneComp(UtilityString.streNull(var.getEsposizioneComp())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagCalcPrzAcq(UtilityString.streNull(var.getFlagCalcPrzAcq())));
BigDecimal colliPedane = var.getColliPedana();
codMartType.getContent().add(objectFactory.createCodMartTypeColliPedane(UtilityString.bigDecimalToString(colliPedane == null ? BigDecimal.ZERO : colliPedane, "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco1(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco1"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco2(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco2"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco3(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco3"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco4(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_sco4"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco1(UtilityString.bigDecimalToString(var.getPercSco1(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco2(UtilityString.bigDecimalToString(var.getPercSco2(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco3(UtilityString.bigDecimalToString(var.getPercSco3(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePercSco4(UtilityString.bigDecimalToString(var.getPercSco4(), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeDataUltVar(dataUltVarS));
codMartType.getContent().add(objectFactory.createCodMartTypeDataAggPrz(dataAggPrzS));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarre(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_barre"))));
codMartType.getContent().add(objectFactory.createCodMartTypePlu(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "plu"))));
codMartType.getContent().add(objectFactory.createCodMartTypeCodBarre(UtilityString.streNull(var.getCodBarre())));
codMartType.getContent().add(objectFactory.createCodMartTypePlu(UtilityString.streNull(var.getPlu())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagStato(flagStato));
codMartType.getContent().add(objectFactory.createCodMartTypeQtaCnf(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "qta_cnf"), "###0.00").replace(",", ".")));
BigDecimal tara = UtilityHashMap.getValueIfExists(var, "tara_kg");
codMartType.getContent().add(objectFactory.createCodMartTypeQtaCnf(UtilityString.bigDecimalToString(var.getQtaCnf(), "###0.00").replace(",", ".")));
BigDecimal tara = var.getTaraKg();
if (tara.compareTo(BigDecimal.ZERO) != 0) {
tara = (tara.multiply(new BigDecimal("1000"))).setScale(0, RoundingMode.HALF_UP);
}
codMartType.getContent().add(objectFactory.createCodMartTypeTara(UtilityString.bigDecimalToString(tara, "###0.00").replace(",", ".")));
String descrizioneEstesa = UtilityHashMap.getValueIfExists(var, colNameDescrEstesa);
if (UtilityString.isNullOrEmpty(descrizioneEstesa))
descrizioneEstesa = UtilityHashMap.getValueIfExists(var, "descrizione_estesa");
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizioneEstesa(UtilityString.streNull(descrizioneEstesa)));
codMartType.getContent().add(objectFactory.createCodMartTypeAnnotazioniArt(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "annotazioni_art"))));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAliq(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_aliq"))));
codMartType.getContent().add(objectFactory.createCodMartTypeArticoloComposto(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "articolo_composto"))));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoEan(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "tipo_codice"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTracciabilita(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tracciabilita"))));
codMartType.getContent().add(objectFactory.createCodMartTypeGgScadPartita(String.valueOf(UtilityHashMap.<Integer>getValueIfExists(var, "gg_scad_partita"))));
codMartType.getContent().add(objectFactory.createCodMartTypePercAliq(UtilityString.bigDecimalToString(UtilityHashMap.getValueIfExists(var, "perc_aliq"), "###0.00").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypeAnnotazioniArt(UtilityString.streNull(var.getAnnotazioniArt())));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAliq(UtilityString.streNull(var.getCodAliq())));
codMartType.getContent().add(objectFactory.createCodMartTypeArticoloComposto(UtilityString.streNull(var.getArticoloComposto())));
codMartType.getContent().add(objectFactory.createCodMartTypeTipoEan(UtilityString.streNull(var.getTipoCodice())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTracciabilita(UtilityString.streNull(var.getFlagTracciabilita())));
codMartType.getContent().add(objectFactory.createCodMartTypeGgScadPartita(String.valueOf(var.getGgScadPartita())));
codMartType.getContent().add(objectFactory.createCodMartTypePercAliq(UtilityString.bigDecimalToString(var.getPercAliq(), "###0.00").replace(",", ".")));
String idArtEqui = UtilityHashMap.getValueIfExists(var, "id_art_equi");
String idArtEqui = var.getIdArtEqui();
if (!UtilityString.isNullOrEmpty(idArtEqui)) {
IdArtEquiType idArtEquiType = objectFactory.createIdArtEquiType();
idArtEquiType.setValue(idArtEqui);
idArtEquiType.setDescrizione(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_art_equi")));
IdArtEquiType idArtEquiType = getIdArtEquiType(objectFactory, var, idArtEqui);
codMartType.getContent().add(objectFactory.createCodMartTypeIdArtEqui(idArtEquiType));
}
codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPieno(UtilityString.bigDecimalToString(przPieno, "###0.00###").replace(",", ".")));
codMartType.getContent().add(objectFactory.createCodMartTypePrezzoPienoIva(UtilityString.bigDecimalToString(przPienoIva, "###0.00").replace(",", ".")));
//PUNTI ARTICOLO
BigDecimal puntiArticolo = getPuntiArt(codMart, variazioniPvDTO.getDataValidita());
BigDecimal puntiArticolo = getPuntiArt(codMart, variazioniPvInputDTO.getDataValidita());
codMartType.getContent().add(objectFactory.createCodMartTypePuntiArticolo(UtilityString.bigDecimalToString(puntiArticolo, "###0.00").replace(",", ".")));
//PROMOZIONE MxN
HashMap<String, Object> datiPromo = new HashMap<>();
FlagMxnType flagMxnType = getScontoMerce(objectFactory, codMart, variazioniPvDTO.getDataValidita(), datiPromo);
FlagMxnType flagMxnType = getScontoMerce(objectFactory, codMart, variazioniPvInputDTO.getDataValidita(), datiPromo);
String finePromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "fine_promo"));
String codPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_promo"));
String finePromo = UtilityString.streNull(var.getFinePromo());
String codPromo = UtilityString.streNull(var.getCodPromo());
if (flagMxnType.getValue().equalsIgnoreCase("S") && finePromo.equalsIgnoreCase("S")) {
codPromo = (String) datiPromo.get("cod_promo");
dataInizPromoS = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(datiPromo.get("data_iniz"));
@@ -296,24 +401,23 @@ public class VariazioniPVService {
}
codMartType.getContent().add(objectFactory.createCodMartTypeCodPromo(codPromo));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizionePromo(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "descr_promo"))));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTipoPromo(flagTipoPromo));
codMartType.getContent().add(objectFactory.createCodMartTypeDescrizionePromo(UtilityString.streNull(var.getDescrPromo())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagTipoPromo(UtilityString.streNull(flagTipoPromo)));
codMartType.getContent().add(objectFactory.createCodMartTypeDataInizPromo(dataInizPromoS));
codMartType.getContent().add(objectFactory.createCodMartTypeDataFinePromo(dataFinePromoS));
codMartType.getContent().add(objectFactory.createCodMartTypeFinePromo(finePromo));
codMartType.getContent().add(objectFactory.createCodMartTypeIdPromo(UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "id_promo"))));
codMartType.getContent().add(objectFactory.createCodMartTypeIdPromo(UtilityString.streNull(var.getIdPromo())));
codMartType.getContent().add(objectFactory.createCodMartTypeFlagMxn(flagMxnType));
//INGREDIENTI
String inviaIngrOpz = null;
inviaIngrOpz = variazioniPvDTO.getInviaIngredienti();
String inviaIngrOpz = variazioniPvInputDTO.getInviaIngredienti();
if (UtilityString.isNullOrEmpty(inviaIngrOpz)) {
//PER CARELLI ABBIAMO RESO OPZIONALE L'INVIO DEGLI INGREDIENTI (SOLO SE VARIATI IN DISTINTA BASE) PER TUTTI GLI ALTRI
//GLI INGREDIENTI VENGONO COMUNQUE INVIATI
inviaIngrOpz = invioIngredientiSetup;
}
String ingredienti = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "ingredienti"));
IngredientiType ingredientiType = getIngredienti(objectFactory, codMart, variazioniPvDTO.getDataValidita(), variazioniPvDTO.getTipoReportEnum(), tipoVariazioneLisv, inviaIngrOpz, ingredienti);
String ingredienti = UtilityString.streNull(var.getIngredienti());
IngredientiType ingredientiType = getIngredienti(objectFactory, codMart, variazioniPvInputDTO.getDataValidita(), variazioniPvInputDTO.getTipoReportEnum(), tipoVariazioneLisv, inviaIngrOpz, ingredienti);
codMartType.getContent().add(objectFactory.createCodMartTypeIngredienti(ingredientiType));
//COMPONENTI
@@ -321,7 +425,7 @@ public class VariazioniPVService {
codMartType.getContent().add(objectFactory.createCodMartTypeComponenti(componentiType));
//PREMI
PremioType premioType = getPuntiPremi(objectFactory, codMart, variazioniPvDTO.getDataValidita());
PremioType premioType = getPuntiPremi(objectFactory, codMart, variazioniPvInputDTO.getDataValidita());
if (premioType != null) {
codMartType.getContent().add(objectFactory.createCodMartTypePremio(premioType));
}
@@ -332,7 +436,7 @@ public class VariazioniPVService {
//DATI GRIGLIA DI ACQUISTO
if ("S".equalsIgnoreCase(setupDepo.get("SELEZIONA_GRIGLIE"))) {
getDatiGriglia(objectFactory, codMart, codMdep, variazioniPvDTO.getDataValidita(), codMartType, getVariazioneGriglia);
getDatiGriglia(objectFactory, codMart, codMdep, variazioniPvInputDTO.getDataValidita(), codMartType, getVariazioneGriglia);
}
if ("S".equalsIgnoreCase(setupDepo.get("ABILITA_CAMPI_LIBERI"))) {
@@ -340,10 +444,11 @@ public class VariazioniPVService {
codMartType.getContent().add(objectFactory.createCodMartTypeLibero2(UtilityString.streNull(getValueCampoLibero(valLibero2, var, codMdep, codMart))));
}
return codMartType;
}
private String getValueCampoLibero(String tipoValore, HashMap<String, Object> var, String codMdep, String codMart) throws Exception {
private String getValueCampoLibero(String tipoValore, VariazioniDettaglioDTO var, String codMdep, String codMart) throws Exception {
if (UtilityString.isNullOrEmpty(tipoValore)) return "";
if (tipoValore.equalsIgnoreCase("M")) {
String sql =
@@ -363,13 +468,49 @@ public class VariazioniPVService {
}
return (valMedio == null ? "" : new DecimalFormat("#,##0.00").format(valMedio));
} else if (tipoValore.equalsIgnoreCase("P")) {
return UtilityHashMap.getValueIfExists(var, "posizione_art");
return var.getPosizioneArticolo();
} else if (tipoValore.equalsIgnoreCase("T")) {
return UtilityHashMap.getValueIfExists(var, "intercode_xml_variazioni");
return var.getIntercodeXmlVariazioni();
}
return null;
}
private static String convertDateToString(Date data) {
String dataString = "";
if (data != null) {
dataString = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(data);
}
return dataString;
}
private static IdArtEquiType getIdArtEquiType(ObjectFactory objectFactory, VariazioniDettaglioDTO var, String idArtEqui) {
IdArtEquiType idArtEquiType = objectFactory.createIdArtEquiType();
idArtEquiType.setValue(idArtEqui);
idArtEquiType.setDescrizione(UtilityString.streNull(var.getDescrArtEqui()));
return idArtEquiType;
}
private static CodMsfaType getCodMsfaType(ObjectFactory objectFactory, VariazioniDettaglioDTO var) {
CodMsfaType codMsfaType = objectFactory.createCodMsfaType();
codMsfaType.setValue(UtilityString.streNull(var.getCodMsfa()));
codMsfaType.setDescrSfam(UtilityString.streNull(var.getDescrMsfa()));
return codMsfaType;
}
private static CodMsgrType getCodMsgrType(ObjectFactory objectFactory, VariazioniDettaglioDTO var) {
CodMsgrType codMsgrType = objectFactory.createCodMsgrType();
codMsgrType.setValue(UtilityString.streNull(var.getCodMsgr()));
codMsgrType.setDescrSgrp(UtilityString.streNull(var.getDescrSgrp()));
return codMsgrType;
}
private static CodMgrpType getCodMgrpType(ObjectFactory objectFactory, VariazioniDettaglioDTO var) {
CodMgrpType codMgrpType = objectFactory.createCodMgrpType();
codMgrpType.setValue(UtilityString.streNull(var.getCodMgrp()));
codMgrpType.setDescrGrup(UtilityString.streNull(var.getDescrGrup()));
return codMgrpType;
}
private String getQueryVariazioni(VariazioniPvInputDTO variazioniPvDTO,
HashMap<String, String> setup,
String codVlis,
@@ -494,7 +635,7 @@ public class VariazioniPVService {
" ON listino.cod_vlis = promozione.cod_vlis AND listino.cod_mart = promozione.cod_mart\n" +
" LEFT OUTER JOIN vtb_promo ON promozione.cod_promo = vtb_promo.cod_promo\n" +
"WHERE vtb_promo.cod_promo_intercode IS NULL\n" +
((variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.LISTINO) ?
((variazioniPvDTO.getTipoReportEnum() == VariazioniReportType.LISTINO) ?
" AND ( (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'S') " +
" OR (IsNull('[INVIA_DISATTIVAZIONI]', 'N') = 'N' AND listino.tipo_variazione <> 'D')) " : "") +
"ORDER BY listino.cod_mart ";
@@ -509,14 +650,13 @@ public class VariazioniPVService {
}
private String getElencoCasse(String codMdep) throws Exception {
private String getElencoCasse(MultiDBTransactionManager mdb, String codMdep) throws Exception {
String sql =
"SELECT mtb_depo_casse.cod_cassa\n" +
" FROM mtb_depo_casse\n" +
" WHERE mtb_depo_casse.cod_mdep = " + UtilityDB.valueToString(codMdep);
List<Object> casse = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
List<String> casse = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sql);
return StringUtils.join(casse, "|");
}
@@ -577,17 +717,6 @@ public class VariazioniPVService {
"WHERE '[DATA_VALIDITA]' BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine\n" +
" AND vtb_list_data.cod_vlis = '[COD_VLIS]'\n" +
"UNION\n" +
"SELECT mtb_depo.cod_vlis,\n" +
" atb_griglie_art.cod_mart,\n" +
" 'G' AS tipo_variazione,\n" +
" CONVERT(VARCHAR(15), NULL) AS cod_mart_new,\n" +
" 'N' AS 'fine_promo'\n" +
"FROM atb_griglie_art\n" +
" INNER JOIN mtb_depo ON atb_griglie_art.cod_mdep = mtb_depo.cod_mdep\n" +
"WHERE atb_griglie_art.data_validita BETWEEN DateAdd(day, -1, '[DATA_VALIDITA]') AND '[DATA_VALIDITA]'\n" +
" AND mtb_depo.cod_vlis = '[COD_VLIS]'\n" +
" AND " + UtilityDB.valueToString(selezionaGriglia) + " = 'S'\n" +
"UNION\n" +
"SELECT lisv.cod_vlis\n" +
" , lisv.cod_mart\n" +
" , tipo_variazione\n" +
@@ -746,7 +875,7 @@ public class VariazioniPVService {
return flagMxnType;
}
private IngredientiType getIngredienti(ObjectFactory objectFactory, String codMart, Date dataVariazioni, VariazioniPvInputDTO.Type tipoReport, String tipoVariazioneLisv, String invioIngOpz, String ingredientiArt) throws Exception {
private IngredientiType getIngredienti(ObjectFactory objectFactory, String codMart, Date dataVariazioni, VariazioniReportType tipoReport, String tipoVariazioneLisv, String invioIngOpz, String ingredientiArt) throws Exception {
IngredientiType ingredientiType = objectFactory.createIngredientiType();
if (UtilityString.isNullOrEmpty(ingredientiArt)) {
String whereCond = "";
@@ -759,7 +888,7 @@ public class VariazioniPVService {
" ORDER BY jtb_dist_mate.id_riga";
if ("S".equalsIgnoreCase(invioIngOpz)) {
if (tipoReport.compareTo(VariazioniPvInputDTO.Type.LISTINO) != 0 &&
if (tipoReport.compareTo(VariazioniReportType.LISTINO) != 0 &&
!"I".equalsIgnoreCase(tipoVariazioneLisv)) {
whereCond = "jtb_cicl.data_ult_var = " + UtilityDB.valueDateToString(dataVariazioni, CommonConstants.DATE_FORMAT_YMD);
query = UtilityDB.addwhereCond(query, whereCond, false);
@@ -966,4 +1095,239 @@ public class VariazioniPVService {
codMartType.getContent().add(objectFactory.createCodMartTypeTipoVariazioneGriglia(tipoVariazioneGriglia));
codMartType.getContent().add(objectFactory.createCodMartTypeCodAlis(codAlisType));
}
public void exportByTipoReport(String tipoReport, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
List<String> tipiReport = new ArrayList<>();
if (!UtilityString.isNullOrEmpty(tipoReport))
tipiReport.add(tipoReport);
else {
tipiReport.add("V"); //Variazioni
tipiReport.add("P"); //Promozioni
tipiReport.add("G"); //Griglie
}
boolean existVariazioni = false;
Date dataValidita = null;
if (variazioniPvInputDTO != null) {
existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
dataValidita = variazioniPvInputDTO.getDataValidita();
}
if (dataValidita == null)
dataValidita = UtilityDate.RelativeDateTime(UtilityDate.getTodayWithoutTime(), 1);
List<VariazioniDTO> listini = getListini(variazioniPvInputDTO, existVariazioni);
List<RunnableArgsThrowable<Triple<String, String, List<VariazioniDettaglioDTO>>>> calls = new ArrayList<>();
for (VariazioniDTO pv : listini) {
for (String report : tipiReport) {
final Date finalDataValidita = dataValidita;
final String finalProfileDb = multiDBTransactionManager.getPrimaryDatasource().getProfile();
calls.add(() -> {
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(finalProfileDb)) {
String codVlis = pv.getCodVlis();
logger.debug(
String.format("Variazioni: Export [CodListino: %s, TipoReport: %s, Validità: %s]",
codVlis,
report,
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(finalDataValidita)));
return new Triple<>(codVlis, report, exportVariazioni(mdb, codVlis, finalDataValidita, report, variazioniPvInputDTO));
}
});
}
}
final ArrayList<Result<Triple<String, String, List<VariazioniDettaglioDTO>>>> results = UtilityThread.executeParallel(calls, 6);
final List<Triple<String, String, List<VariazioniDettaglioDTO>>> completedExports = results.stream()
.filter(x -> x instanceof Result.Success)
.map(x -> ((Result.Success<Triple<String, String, List<VariazioniDettaglioDTO>>>) x).getData())
.collect(Collectors.toList());
final List<Exception> generatedErrors = results.stream()
.filter(x -> x instanceof Result.Error)
.map(x -> ((Result.Error<?>) x).getError())
.collect(Collectors.toList());
String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), "VARIAZIONE PV", "XML_DIALOGO", "EMAIL_FOR_LOG");
if (!UtilityString.isNullOrEmpty(emailForLog)) {
StringBuilder sb = new StringBuilder();
for (Triple<String, String, List<VariazioniDettaglioDTO>> completedExport : completedExports) {
if(completedExport.getThird().isEmpty())
continue;
sb.append("Esportazione ")
.append(completedExport.getSecond())
.append(" punto vendita ")
.append(completedExport.getFirst())
.append(" (").append(completedExport.getThird().size()).append(" variazioni)")
.append(" avvenuta con successo\n\r");
}
if(!generatedErrors.isEmpty())
sb.append("\n\r\n\rErrori\n\r");
for (Exception generatedError : generatedErrors) {
sb.append("Messaggio errore: ")
.append(generatedError.getMessage())
.append("\n\r");
}
mailService.sendMailPrimary(multiDBTransactionManager,
null, null,
emailForLog, null, null,
"Esportazione variazioni", sb.toString(), false, false,
null, null, null,
false, null);
}
}
private List<VariazioniDettaglioDTO> exportVariazioni(MultiDBTransactionManager multiDBTransactionManager, String codVlis, Date dataValidita, String tipoReport, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
VariazioniPvInputDTO v =
new VariazioniPvInputDTO()
.setCodVlis(codVlis)
.setTipoReport(tipoReport)
.setDataValidita(dataValidita)
.setWhereCondArt(variazioniPvInputDTO != null ? variazioniPvInputDTO.getWhereCondArt() : null)
.setWhereCondLisv(variazioniPvInputDTO != null ? variazioniPvInputDTO.getWhereCondLisv() : null)
.setWhereCondDoc(variazioniPvInputDTO != null ? variazioniPvInputDTO.getWhereCondDoc() : null)
.setInviaIngredienti(variazioniPvInputDTO != null ? variazioniPvInputDTO.getInviaIngredienti() : "S")
.setFileXml(variazioniPvInputDTO != null ? variazioniPvInputDTO.getFileXml() : null)
.setInviaDisattivazioni(variazioniPvInputDTO != null ? variazioniPvInputDTO.getInviaDisattivazioni() : "N")
.setUserName(variazioniPvInputDTO != null ? variazioniPvInputDTO.getUserName() : null)
.setVariazioni(variazioniPvInputDTO != null ? variazioniPvInputDTO.getVariazioni() : new ArrayList<>());
return exportVariazioni(multiDBTransactionManager, codVlis, v);
}
public void exportByCodVlis(String codVlis, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
exportVariazioni(multiDBTransactionManager, codVlis, variazioniPvInputDTO);
}
public List<VariazioniDettaglioDTO> exportVariazioni(MultiDBTransactionManager multiDBTransactionManager, String codVlis, VariazioniPvInputDTO variazioniPvInputDTO) throws Exception {
boolean existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
if (!existVariazioni) {
variazioniPvInputDTO.setCodVlis(codVlis);
List<VariazioniDettaglioDTO> variazioniDettaglioList = calcVariazionePrezzoPV(multiDBTransactionManager, variazioniPvInputDTO);
variazioniPvInputDTO.setVariazioni(variazioniDettaglioList);
existVariazioni = (variazioniPvInputDTO.getVariazioni() != null && !variazioniPvInputDTO.getVariazioni().isEmpty());
}
if (existVariazioni) {
final String exportType = "VARIAZIONE PV";
String sql =
Query.format(
"SELECT value\n" +
"FROM mtb_depo\n" +
" LEFT OUTER JOIN stb_gest_setup_depo ON mtb_depo.cod_mdep = stb_gest_setup_depo.cod_mdep\n" +
" AND stb_gest_setup_depo.gest_name = 'DATI_AZIENDA' AND\n" +
" stb_gest_setup_depo.section = 'DATI_DEPOSITO' AND\n" +
" stb_gest_setup_depo.key_section = 'PROFILE_DB'\n" +
"WHERE mtb_depo.cod_vlis = %s", codVlis);
String profileDb = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (UtilityString.isNullOrEmpty(profileDb)) {
profileDb = multiDBTransactionManager.getPrimaryDatasource().getProfile();
}
try (MultiDBTransactionManager multiDBPv = new MultiDBTransactionManager(profileDb)) {
runExportOnRemote(multiDBPv, variazioniPvInputDTO, codVlis, exportType);
}
}
return variazioniPvInputDTO.getVariazioni();
}
private void runExportOnRemote(MultiDBTransactionManager multiDBPv, VariazioniPvInputDTO variazioniPvInputDTO, String codVlis, String exportType) throws Exception {
String sql = Query.format("SELECT cod_mdep, descrizione FROM mtb_depo WHERE cod_vlis = %s and flag_movimentabile = 'S' ", codVlis);
HashMap<String, Object> datiDepo = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBPv.getPrimaryConnection(), sql);
if (!UtilityHashMap.isPresent(datiDepo))
throw new Exception(String.format("Nessun deposito agganciato al listino %s", codVlis));
String codMdep = UtilityHashMap.getValueIfExists(datiDepo, "cod_mdep");
String descrizione = UtilityHashMap.getValueIfExists(datiDepo, "descrizione");
sql =
Query.format(
"SELECT wtb_depo.cod_mdep,\n" +
" wui.format_file,\n" +
" stb_user.user_name,\n" +
" stb_user.password,\n" +
" wui.priority\n" +
"FROM wtb_depo\n" +
" INNER JOIN stb_user ON wtb_depo.user_name = stb_user.user_name AND stb_user.key_group = '10'\n" +
" INNER JOIN wtb_users_info wui ON stb_user.user_name = wui.user_name AND\n" +
" wui.export_type = %s AND\n" +
" wui.flag_state = 'S' AND\n" +
" IsNull(wui.priority, '0') <> '0'\n" +
"WHERE wtb_depo.cod_mdep = %s",
exportType, codMdep);
List<HashMap<String, Object>> listExport = UtilityDB.executeSimpleQuery(multiDBPv.getPrimaryConnection(), sql);
boolean existFormatFile = listExport.stream()
.anyMatch(x -> !UtilityString.isNullOrEmpty(UtilityHashMap.getValueIfExists(x, "format_file")));
if (!existFormatFile)
throw new Exception(String.format("Nessuna tipologia di esportazione configurata per il punto vendita %s - %s", codMdep, descrizione));
for (HashMap<String, Object> export : listExport) {
String userName = UtilityHashMap.getValueIfExists(export, "user_name");
String formatFile = UtilityHashMap.getValueIfExists(export, "format_file");
httpRestWrapper.callInternalExport(multiDBPv.getDistributoreDatasource().getProfile(),
userName,
exportType,
formatFile,
Entity.json(variazioniPvInputDTO));
boolean testError = false;
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);
// }
}
}
}

View File

@@ -8,8 +8,8 @@ import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.response.StatusResponse;
import it.integry.ems.retail.ReportVariazioni.dto.Variazioni.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.service.VariazioniPVService;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.service.VariazioniPvService;
import it.integry.ems.retail.Scontrini.service.ScontriniImportService;
import it.integry.ems.retail.dto.IntegRetailRequestDTO;
import it.integry.ems.retail.export.VariazioniExporter;
@@ -45,7 +45,7 @@ public class RetailController {
private ScontriniService scontriniService;
@Autowired
private VariazioniPVService retailService;
private VariazioniPvService retailService;
@Autowired
private EmsServices emsServices;

View File

@@ -1,12 +1,19 @@
package it.integry.ems.retail.export;
import com.annimon.stream.Stream;
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.retail.export.service.VariazioniPvExportServices;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems_model.entity.DtbDoct;
import it.integry.ems_model.entity.NtbVariazioniExportLog;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import java.sql.Connection;
import java.util.List;
import java.util.stream.Collectors;
public class VariazioniExporter extends BaseEntityExporter implements IEntityExporter {
@@ -21,7 +28,7 @@ public class VariazioniExporter extends BaseEntityExporter implements IEntityExp
switch (currentFormatEnum) {
case XML_DIALOGO:
entityExportResponse = variazioniPvExportServices.xmlDialogo(type, format, whereCond, jsonBody, this.wtbUserInfo, anomalie);
entityExportResponse = variazioniPvExportServices.xmlDialogo(type, format, whereCond, jsonBody, this.wtbUserInfo);
break;
case SES_SEP:
entityExportResponse = variazioniPvExportServices.sesSep(type, format, whereCond, jsonBody, this.wtbUserInfo, anomalie);
@@ -36,6 +43,19 @@ public class VariazioniExporter extends BaseEntityExporter implements IEntityExp
public void postSend(EntityExportResponse entityExportResponse) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryDatasource().getConnection();
//SE CONFIGURATO SALVARE NELLA TABELLA DI LOG DELLE VARIAZIONI.
boolean saveLog = setupGest.getExportSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), type, format, "SAVE_LOG");
if (saveLog && entityExportResponse != null && entityExportResponse.getExtraInfo() instanceof List){
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
List<NtbVariazioniExportLog> ntbVariazioniExportLogs =
((List<?>) entityExportResponse.getExtraInfo()).stream()
.filter(x -> x instanceof NtbVariazioniExportLog)
.map(x -> (NtbVariazioniExportLog) x)
.collect(Collectors.toList());
EntityProcessor entityProcessor = context.getBean(EntityProcessor.class);
entityProcessor.processEntityList(ntbVariazioniExportLogs, true);
}
}

View File

@@ -9,18 +9,23 @@ import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.properties.EmsProperties;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.retail.ReportVariazioni.dto.Variazioni.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.service.VariazioniPVService;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniPvInputDTO;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniReportType;
import it.integry.ems.retail.ReportVariazioni.service.VariazioniPvService;
import it.integry.ems.retail.ReportVariazioni.xml.*;
import it.integry.ems.retail.pvmRetail.dto.SesSepDTO;
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;
@@ -40,8 +45,6 @@ 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.*;
@@ -57,58 +60,60 @@ public class VariazioniPvExportServices {
private SetupGest setupGest;
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@Autowired
private VariazioniPVService variazioniPVService;
public EntityExportResponse xmlDialogo(String type, String format, String whereCond, JsonNode jsonBody, WtbUsersInfo wtbUsersInfo, List<AnomalieDTO> anomalie) throws Exception {
String fileXml = null;
VariazioniPvInputDTO variazioniPvDTO = new VariazioniPvInputDTO();
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<List<File>>();
entityExportResponse.setResponse(new ArrayList<File>());
boolean isSingleLisv = false;
@Autowired
private VariazioniPvService variazioniPvService;
public EntityExportResponse xmlDialogo(String type, String format, String whereCond, JsonNode jsonBody, WtbUsersInfo wtbUsersInfo) throws Exception {
String fileXml;
List<EntityBase> extraInfo = new ArrayList<>();
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<>();
entityExportResponse.setResponse(new ArrayList<>());
Map<String, String> setup = setupGest.getExportSetupSection(multiDBTransactionManager.getPrimaryConnection(), type, format);
VariazioniPvInputDTO variazioniPvDTO = null;
if (jsonBody != null) {
ResponseJSONObjectMapper mapper = new ResponseJSONObjectMapper();
variazioniPvDTO = mapper.readValue(jsonBody.toString(), VariazioniPvInputDTO.class);
variazioniPvDTO = jsonObjectMapper.readValue(jsonBody.toString(), VariazioniPvInputDTO.class);
}
if (UtilityString.isNullOrEmpty(variazioniPvDTO.getFileXml())) {
if (variazioniPvDTO != null && UtilityString.isNullOrEmpty(variazioniPvDTO.getFileXml())) {
boolean existJson = (variazioniPvDTO.getVariazioni() != null || variazioniPvDTO.getVariazioni().size() > 0);
if (variazioniPvDTO.getDataValidita() == null) {
variazioniPvDTO.setDataValidita(UtilityDate.RelativeDateTime(new Date(), 1));
variazioniPvDTO.setDataValidita( UtilityDate.RelativeDateTime(new Date(), 1));
}
if (variazioniPvDTO.getTipoReportEnum() == null) {
variazioniPvDTO.setTipoReportEnum(VariazioniPvInputDTO.Type.VARIAZIONI);
variazioniPvDTO.setTipoReportEnum(VariazioniReportType.VARIAZIONI);
}
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 (!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(codVlis)) {
whereCond = "vtb_list.cod_vlis = " + UtilityDB.valueToString(codVlis);
variazioniPvDTO.setWhereCondLisv(whereCond);
variazioniPvDTO.setWhereCondArt(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));
@@ -134,7 +139,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 " +
" case when charindex('FILE', priority) < 0 THEN 'S' ELSE flag_remote_save END as salvataggio_remoto" +
" 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 " +
@@ -142,61 +147,52 @@ public class VariazioniPvExportServices {
" wtb_users_info.export_type = " + UtilityDB.valueToString(type) + " AND " +
" wtb_users_info.format_file = " + UtilityDB.valueToString(format);
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);
HashMap<String, Object> datiUtente = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBPv.getPrimaryConnection(), query);
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()));
}
if (!UtilityHashMap.isPresent(datiUtente))
throw new Exception(String.format("Nessun utente trovato per il punto vendita %s", fileVariazioniDTO.getCodVlis()));
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);
String userName = UtilityHashMap.getValueIfExists(datiUtente, "user_name");
String password = UtilityHashMap.getValueIfExists(datiUtente, "password");
String salvataggioRemoto = UtilityHashMap.getValueIfExists(datiUtente, "salvataggio_remoto", "N");
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<String, String> param = new HashMap<String, String>();
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);
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()));
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());
}
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<String, String> param = new HashMap<>();
param.put("profileDb", profileDB);
param.put("type", type);
param.put("format", format);
String json = jsonObjectMapper.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());
}
}
rs.close();
ps.close();
multiDBPv.closeAll();
}
}
}
if (isSingleLisv) {
String suffix = "";
if (variazioniPvDTO.getTipoReportEnum().compareTo(VariazioniPvInputDTO.Type.PROMOZIONI) == 0) {
if (variazioniPvDTO.getTipoReportEnum().compareTo(VariazioniReportType.PROMOZIONI) == 0) {
suffix = "P";
}
String pathFile = setup.get("PATH_FILE");
@@ -214,12 +210,32 @@ 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 ){
json = jsonObjectMapper.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);
}
@@ -240,17 +256,16 @@ public class VariazioniPvExportServices {
}
if (jsonBody != null) {
ResponseJSONObjectMapper mapper = new ResponseJSONObjectMapper();
variazioniPvDTO = mapper.readValue(jsonBody.toString(), VariazioniPvInputDTO.class);
variazioniPvDTO = jsonObjectMapper.readValue(jsonBody.toString(), VariazioniPvInputDTO.class);
}
if (variazioniPvDTO.getDataValidita() == null) {
variazioniPvDTO.setDataValidita(UtilityDate.RelativeDateTime(new Date(), 1));
}
if (variazioniPvDTO.getTipoReportEnum() == null) {
variazioniPvDTO.setTipoReportEnum(VariazioniPvInputDTO.Type.VARIAZIONI);
variazioniPvDTO.setTipoReportEnum(VariazioniReportType.VARIAZIONI);
}
ReportType variazioni = variazioniPVService.variazionePrezzoPV(variazioniPvDTO);
ReportType variazioni = variazioniPvService.variazionePrezzoPV(variazioniPvDTO);
if (variazioni.getCodVlis().size() == 1) {
List<Serializable> content = variazioni.getCodVlis().get(0).getContent();

View File

@@ -10,6 +10,7 @@ import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
@RestController
@Scope("request")
@@ -22,13 +23,30 @@ public class ExchangeColliImportController {
private ExchangeColliImportService exchangeColliImportService;
@RequestMapping(value = "importLavorazione", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importColliLavorazione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
exchangeColliImportService.importColliLavorazione();
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "getCertificati", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse getCertificati(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam() String codAnag,
@RequestParam() String dataCert,
@RequestParam() String codMart,
@RequestParam() String codVdes
) throws Exception {
LocalDate dataCertificato = LocalDate.parse(dataCert);
return ServiceRestResponse.createPositiveResponse(exchangeColliImportService.getCertificati(codAnag,
dataCertificato,
codMart,
codVdes));
}
}

View File

@@ -0,0 +1,252 @@
package it.integry.ems.system.exchange.dto;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class CertificatiSinfoOneDTO {
@SqlField("codAnag")
private String codAnag;
@SqlField("ragSoc")
private String ragSoc;
@SqlField("codVdes")
private String codVdes;
@SqlField("dataCert")
private LocalDate dataCert;
@SqlField("numCert")
private BigDecimal numCert;
@SqlField("dataBolla")
private LocalDate dataBolla;
@SqlField("numBolla")
private String numBolla;
@SqlField("codMart")
private String codMart;
@SqlField("varieta")
private String varieta;
@SqlField("lottoFornitore")
private String lottoFornitore;
@SqlField("pesoLordoKg")
private BigDecimal pesoLordoKg;
@SqlField("pesoNettoKg")
private BigDecimal pesoNettoKg;
@SqlField("scartoKg")
private BigDecimal scartoKg;
@SqlField("valUnt")
private BigDecimal valUnt;
@SqlField("casseScaricate")
private BigDecimal casseScaricate;
@SqlField("casseRese")
private BigDecimal casseRese;
@SqlField("targaMotrice")
private String targaMotrice;
@SqlField("targaRimorchio")
private String targaRimorchio;
@SqlField("tagliandoPesa")
private String tagliandoPesa;
@SqlField("dataOraLordo")
private LocalDateTime dataOraLordo;
@SqlField("sconto8")
private BigDecimal sconto8;
@SqlField("scartoCq")
private BigDecimal scartoCq;
public String getCodAnag() {
return codAnag;
}
public CertificatiSinfoOneDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getRagSoc() {
return ragSoc;
}
public CertificatiSinfoOneDTO setRagSoc(String ragSoc) {
this.ragSoc = ragSoc;
return this;
}
public String getCodVdes() {
return codVdes;
}
public CertificatiSinfoOneDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public LocalDate getDataCert() {
return dataCert;
}
public CertificatiSinfoOneDTO setDataCert(LocalDate dataCert) {
this.dataCert = dataCert;
return this;
}
public BigDecimal getNumCert() {
return numCert;
}
public CertificatiSinfoOneDTO setNumCert(BigDecimal numCert) {
this.numCert = numCert;
return this;
}
public LocalDate getDataBolla() {
return dataBolla;
}
public CertificatiSinfoOneDTO setDataBolla(LocalDate dataBolla) {
this.dataBolla = dataBolla;
return this;
}
public String getNumBolla() {
return numBolla;
}
public CertificatiSinfoOneDTO setNumBolla(String numBolla) {
this.numBolla = numBolla;
return this;
}
public String getCodMart() {
return codMart;
}
public CertificatiSinfoOneDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getVarieta() {
return varieta;
}
public CertificatiSinfoOneDTO setVarieta(String varieta) {
this.varieta = varieta;
return this;
}
public String getLottoFornitore() {
return lottoFornitore;
}
public CertificatiSinfoOneDTO setLottoFornitore(String lottoFornitore) {
this.lottoFornitore = lottoFornitore;
return this;
}
public BigDecimal getPesoLordoKg() {
return pesoLordoKg;
}
public CertificatiSinfoOneDTO setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoLordoKg = pesoLordoKg;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public CertificatiSinfoOneDTO setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getScartoKg() {
return scartoKg;
}
public CertificatiSinfoOneDTO setScartoKg(BigDecimal scartoKg) {
this.scartoKg = scartoKg;
return this;
}
public BigDecimal getValUnt() {
return valUnt;
}
public CertificatiSinfoOneDTO setValUnt(BigDecimal valUnt) {
this.valUnt = valUnt;
return this;
}
public BigDecimal getCasseScaricate() {
return casseScaricate;
}
public CertificatiSinfoOneDTO setCasseScaricate(BigDecimal casseScaricate) {
this.casseScaricate = casseScaricate;
return this;
}
public BigDecimal getCasseRese() {
return casseRese;
}
public CertificatiSinfoOneDTO setCasseRese(BigDecimal casseRese) {
this.casseRese = casseRese;
return this;
}
public String getTargaMotrice() {
return targaMotrice;
}
public CertificatiSinfoOneDTO setTargaMotrice(String targaMotrice) {
this.targaMotrice = targaMotrice;
return this;
}
public String getTargaRimorchio() {
return targaRimorchio;
}
public CertificatiSinfoOneDTO setTargaRimorchio(String targaRimorchio) {
this.targaRimorchio = targaRimorchio;
return this;
}
public String getTagliandoPesa() {
return tagliandoPesa;
}
public CertificatiSinfoOneDTO setTagliandoPesa(String tagliandoPesa) {
this.tagliandoPesa = tagliandoPesa;
return this;
}
public LocalDateTime getDataOraLordo() {
return dataOraLordo;
}
public CertificatiSinfoOneDTO setDataOraLordo(LocalDateTime dataOraLordo) {
this.dataOraLordo = dataOraLordo;
return this;
}
public BigDecimal getSconto8() {
return sconto8;
}
public CertificatiSinfoOneDTO setSconto8(BigDecimal sconto8) {
this.sconto8 = sconto8;
return this;
}
public BigDecimal getScartoCq() {
return scartoCq;
}
public CertificatiSinfoOneDTO setScartoCq(BigDecimal scartoCq) {
this.scartoCq = scartoCq;
return this;
}
}

View File

@@ -1,20 +1,27 @@
package it.integry.ems.system.exchange.service;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.expansion.RunnableThrowable;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.dto.CertificatiSinfoOneDTO;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.DtbDoct;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
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.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityQuery;
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;
import java.math.BigDecimal;
import java.sql.Connection;
import java.time.LocalDate;
import java.util.ArrayList;
@@ -47,6 +54,8 @@ public class ExchangeColliImportService {
private ExchangePartiteMagazzinoImportService exchangePartiteMagazzinoImportService;
private final Logger logger = LogManager.getLogger();
@Autowired
private SetupGest setupGest;
public void importColliLavorazione() throws Exception {
@@ -179,4 +188,63 @@ public class ExchangeColliImportService {
}
public List<CertificatiSinfoOneDTO> getCertificati(String codAnag, LocalDate dataCert, String codMart, String codVdes) throws Exception {
String profileDbExchange = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "PVM", "PIAN_ACC_ROSSG", "PROFILE_DB_CERT");
DataSource dsSync = new DataSource();
dsSync.initialize(profileDbExchange);
multiDBTransactionManager.addConnection(profileDbExchange, dsSync);
Connection conExch = multiDBTransactionManager.getDatabaseDataSource(profileDbExchange).getConnection();
List<CertificatiSinfoOneDTO> listaCert = UtilityDB.executeSimpleQueryDTO(
conExch,
Query.format("SELECT TRIM(cod_anag) AS codAnag,\n" +
" TRIM(rag_soc) AS ragSoc,\n" +
" TRIM(cod_Vdes) AS codVdes,\n" +
" data_cert AS dataCert,\n" +
" CONVERT(NUMERIC(10, 0), num_cert) AS numCert,\n" +
" data_bolla AS dataBolla,\n" +
" TRIM(num_bolla) AS numBolla,\n" +
" TRIM(PMB_TIPO_POMODORO) AS codMart,\n" +
" TRIM(PMB_SEME) AS varieta,\n" +
" TRIM(lotto_fornitore) AS lottoFornitore,\n" +
" CONVERT(NUMERIC(15, 3), peso_lordo_kg) AS pesoLordoKg,\n" +
" CONVERT(NUMERIC(15, 3), peso_netto_kg) AS pesoNettoKg,\n" +
" CONVERT(NUMERIC(15, 3), scarto_kg) AS scartoKg,\n" +
" CONVERT(NUMERIC(15, 3), val_unt) AS valUnt,\n" +
" CONVERT(NUMERIC(10, 0), casse_scaricate) AS casseScaricate,\n" +
" CONVERT(NUMERIC(10, 0), casse_rese) AS casseRese,\n" +
" TRIM(targa_motrice) AS targaMotrice,\n" +
" TRIM(targa_rimorchio) AS targaRimorchio,\n" +
" TRIM(tagliando_pesa) AS tagliandoPesa,\n" +
" data_ora_lordo AS dataOraLordo,\n" +
" CONVERT(NUMERIC(15, 3), sconto8) AS sconto8,\n" +
" CONVERT(NUMERIC(15, 3), PMB_SCARTO_CQ) AS scartoCq\n " +
"FROM s1_Certificati\n" +
"WHERE cod_anag = {}\n" +
" AND data_cert = {}\n" +
" AND PMB_TIPO_POMODORO = {}", codAnag, dataCert, codMart),
CertificatiSinfoOneDTO.class);
String codDtipLavCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
"COD_DTIP_CAR");
List<DtbDoct> certificatiImportati = UtilityDB.executeSimpleQueryDTO(
multiDBTransactionManager.getPrimaryConnection(),
Query.format("SELECT data_doc,num_doc,ser_doc,cod_dtip,cod_anag \n" +
"from dtb_doct \n" +
" WHERE " +
" cod_dtip = {}" +
" AND cod_anag = {}\n" +
" AND data_doc = {}\n", codDtipLavCar, codAnag, dataCert),
DtbDoct.class);
if (!UtilityList.isNullOrEmpty(certificatiImportati) && ! UtilityList.isNullOrEmpty(listaCert)) {
listaCert = listaCert.stream().filter((CertificatiSinfoOneDTO cert) ->
certificatiImportati.stream().noneMatch(ddt -> ddt.getNumDoc() == cert.getNumCert().intValue())
).collect(Collectors.toList());
}
return listaCert;
}
}

View File

@@ -72,6 +72,7 @@ public class SystemMigrationService {
sqlObjectType = SqlObjectTypeEnum.PROCEDURE;
break;
case "T":
case "TR":
sqlObjectType = SqlObjectTypeEnum.TRIGGER;
break;
}

View File

@@ -90,6 +90,9 @@ public class RestLoggerBodyFilter extends AbstractRequestLoggingFilter {
!serviceName.startsWith("agribook/orders/attachment/") &&
!serviceName.contains("upload") &&
!serviceName.startsWith("users/") &&
!serviceName.startsWith("users/") &&
!serviceName.startsWith("variazioni-negozi/") &&
!serviceName.startsWith("decodeUcs/") &&
(!serviceName.contains("processSql") || UtilityDebug.isDebugExecution());
}

19
pom.xml
View File

@@ -77,6 +77,25 @@
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>${java.version}</version>
</jdk>
</toolchains>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>

14
toolchains-jenkins.xml Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<!-- JDK toolchains -->
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
</provides>
<configuration>
<jdkHome>C:\Program Files\Java\jdk1.8.0_202</jdkHome>
</configuration>
</toolchain>
</toolchains>