aggiornamento griglie di vendita

This commit is contained in:
2025-06-09 14:42:40 +02:00
parent bc4b741007
commit a49367fb80
4 changed files with 174 additions and 32 deletions

View File

@@ -5,6 +5,8 @@ import it.integry.common.var.CommonConstants;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import org.kie.api.definition.type.PropertyReactive;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
@@ -29,7 +31,7 @@ public class VtbGriglia extends EntityBase {
@PK
@SqlField(value = "data_validita", nullable = false, format = CommonConstants.SYSDATE)
private Date dataValidita;
private LocalDate dataValidita;
@SqlField(value = "descrizione", maxLength = 40, nullable = false)
private String descrizione;
@@ -50,11 +52,11 @@ public class VtbGriglia extends EntityBase {
return this;
}
public Date getDataValidita() {
public LocalDate getDataValidita() {
return dataValidita;
}
public VtbGriglia setDataValidita(Date dataValidita) {
public VtbGriglia setDataValidita(LocalDate dataValidita) {
this.dataValidita = dataValidita;
return this;
}

View File

@@ -6,6 +6,8 @@ import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.base.EntityBase;
import org.kie.api.definition.type.PropertyReactive;
import java.time.LocalDate;
import java.util.Date;
import org.apache.logging.log4j.LogManager;
@@ -32,7 +34,7 @@ public class VtbGrigliaArt extends EntityBase {
@PK
@SqlField(value = "data_validita", nullable = false)
private Date dataValidita;
private LocalDate dataValidita;
public VtbGrigliaArt() {
super(logger);
@@ -56,11 +58,11 @@ public class VtbGrigliaArt extends EntityBase {
return this;
}
public Date getDataValidita() {
public LocalDate getDataValidita() {
return dataValidita;
}
public VtbGrigliaArt setDataValidita(Date dataValidita) {
public VtbGrigliaArt setDataValidita(LocalDate dataValidita) {
this.dataValidita = dataValidita;
return this;
}

View File

@@ -0,0 +1,101 @@
package it.integry.ems.product.importaz.dto;
import com.sun.org.apache.bcel.internal.generic.SWITCH;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.List;
import java.util.Objects;
public class GriglieVenditaExcelDTO {
private String codGriglia;
private List<DatiGriglia> elencoRighe;
public String getCodGriglia() {
return codGriglia;
}
public GriglieVenditaExcelDTO setCodGriglia(String codGriglia) {
this.codGriglia = codGriglia;
return this;
}
public List<DatiGriglia> getElencoRighe() {
return elencoRighe;
}
public GriglieVenditaExcelDTO setElencoRighe(List<DatiGriglia> elencoRighe) {
this.elencoRighe = elencoRighe;
return this;
}
public GriglieVenditaExcelDTO addRiga(Integer ggSettimana, String codMart) {
LocalDate nextMonday = LocalDate.now().with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.MONDAY));;
LocalDate dataGriglia;
switch (ggSettimana) {
case 1: // Lunedì
dataGriglia = nextMonday;
break;
case 2: // Martedì
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.TUESDAY));
break;
case 3: // Mercoledì
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
break;
case 4: // Giovedì
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.THURSDAY));
break;
case 5: // Venerdì
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.FRIDAY));
break;
case 6: // Sabato
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.SATURDAY));
break;
case 7: // Domenica
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.SUNDAY));
break;
default:
throw new IllegalArgumentException("Giorno della settimana non valido: " + ggSettimana);
}
DatiGriglia riga = new DatiGriglia()
.setCodMart(codMart)
.setDataGriglia(dataGriglia);
this.elencoRighe.add(riga);
return this;
}
public class DatiGriglia {
private String codMart;
private LocalDate dataGriglia;
public String getCodMart() {
return codMart;
}
public DatiGriglia setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public LocalDate getDataGriglia() {
return dataGriglia;
}
public DatiGriglia setDataGriglia(LocalDate dataGriglia) {
this.dataGriglia = dataGriglia;
return this;
}
@Override
public boolean equals(Object o) {
if (!(o instanceof DatiGriglia)) return false;
DatiGriglia that = (DatiGriglia) o;
return Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getDataGriglia(), that.getDataGriglia());
}
@Override
public int hashCode() {
return Objects.hash(getCodMart(), getDataGriglia());
}
}
}

View File

@@ -2,6 +2,7 @@ package it.integry.ems.product.importaz.service;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.product.importaz.dto.GriglieVenditaExcelDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -32,27 +34,58 @@ public class ImportGrigliaVenditaService {
private EntityProcessor entityProcessor;
public List<EntityBase> importGriglieExcel(String type, String format, ImportRequestDTO requestDTO, List<AnomalieDTO> anomalie) throws Exception {
Date dataValidita = new Date();
String descrizione = "Griglia di vendita ";
List<VtbGriglia> vtbGrigliaList = new ArrayList<>();
HashMap<String, List<String>> hashMap = new HashMap<>();
List<GriglieVenditaExcelDTO> griglieVenditaExcelDTOS = new ArrayList<>();
Iterator<Row> rowIterator = UtilityExcel.readXlsxFile(requestDTO, Row.class);
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
String codGriglia = UtilityExcel.getCellAsString(row, 0, true);
String codMart = UtilityExcel.getCellAsString(row, 1, true);
String excludeLunedi = UtilityExcel.getCellAsString(row, 3, false);
String excludeMartedi = UtilityExcel.getCellAsString(row, 4, false);
String excludeMercoledi = UtilityExcel.getCellAsString(row, 5, false);
String excludeGiovedi = UtilityExcel.getCellAsString(row, 6, false);
String excludeVenerdi = UtilityExcel.getCellAsString(row, 7, false);
String excludeSabato = UtilityExcel.getCellAsString(row, 8, false);
if (!hashMap.containsKey(codGriglia)) {
hashMap.put(codGriglia, new ArrayList<>());
if ( griglieVenditaExcelDTOS.stream().noneMatch(x->x.getCodGriglia().equalsIgnoreCase(codGriglia))){
GriglieVenditaExcelDTO grigliaVendita = new GriglieVenditaExcelDTO()
.setCodGriglia(codGriglia)
.setElencoRighe(new ArrayList<>());
griglieVenditaExcelDTOS.add(grigliaVendita);
}
hashMap.get(codGriglia).add(codMart);
griglieVenditaExcelDTOS
.stream()
.filter(x->x.getCodGriglia().equalsIgnoreCase(codGriglia))
.findFirst()
.ifPresent(x->{
if (UtilityString.isNullOrEmpty(excludeLunedi)) {
x.addRiga(1, codMart);
}
if(UtilityString.isNullOrEmpty(excludeMartedi)) {
x.addRiga(2, codMart);
}
if(UtilityString.isNullOrEmpty(excludeMercoledi)) {
x.addRiga(3, codMart);
}
if(UtilityString.isNullOrEmpty(excludeGiovedi)) {
x.addRiga(4, codMart);
}
if(UtilityString.isNullOrEmpty(excludeVenerdi)) {
x.addRiga(5, codMart);
}
if(UtilityString.isNullOrEmpty(excludeSabato)) {
x.addRiga(6, codMart);
}
});
}
for (String codGriglia : hashMap.keySet()) {
List<String> codMartList = hashMap.get(codGriglia);
for (GriglieVenditaExcelDTO griglia: griglieVenditaExcelDTOS) {
String codGriglia = griglia.getCodGriglia();
String sql =
Query.format(
@@ -65,28 +98,32 @@ public class ImportGrigliaVenditaService {
continue;
}
VtbGriglia vtbGriglia = new VtbGriglia()
.setCodGriglia(codMdep)
.setDescrizione(descrizione + codGriglia)
.setDataValidita(dataValidita);
List<VtbGrigliaArt> vtbGrigliaArtList = codMartList.stream()
.map(codMart -> {
VtbGrigliaArt vtbGrigliaArt = new VtbGrigliaArt()
.setCodMart(codMart)
.setCodGriglia(codMdep)
.setDataValidita(dataValidita);
vtbGrigliaArt.setOperation(OperationType.INSERT_OR_UPDATE);
return vtbGrigliaArt;
})
List<GriglieVenditaExcelDTO.DatiGriglia> elencoRighe = griglia.getElencoRighe()
.stream()
.sorted(Comparator.comparing(GriglieVenditaExcelDTO.DatiGriglia::getDataGriglia))
.collect(Collectors.toList());
vtbGriglia
.setVtbGrigliaArt(vtbGrigliaArtList)
.setOperation(OperationType.INSERT_OR_UPDATE);
VtbGriglia vtbGriglia = null;
List<VtbGrigliaArt> vtbGrigliaArtList = new ArrayList<>();
for (GriglieVenditaExcelDTO.DatiGriglia datiGriglia :elencoRighe) {
String codMart = datiGriglia.getCodMart();
LocalDate dataValidita = datiGriglia.getDataGriglia();
vtbGrigliaList.add(vtbGriglia);
if (vtbGrigliaList.stream().noneMatch(x->x.getCodGriglia().equalsIgnoreCase(codGriglia) &&
x.getDataValidita().equals(dataValidita))){
vtbGriglia = new VtbGriglia()
.setCodGriglia(codMdep)
.setDescrizione(descrizione + codGriglia)
.setDataValidita(dataValidita);
vtbGriglia.setOperation(OperationType.INSERT_OR_UPDATE);
vtbGrigliaList.add(vtbGriglia);
}
VtbGrigliaArt vtbGrigliaArt = new VtbGrigliaArt()
.setCodMart(codMart);
vtbGrigliaArt.setOperation(OperationType.INSERT_OR_UPDATE);
vtbGriglia.getVtbGrigliaArt().add(vtbGrigliaArt);
}
}
return entityProcessor.processEntityList(vtbGrigliaList, multiDBTransactionManager, true);