aggiornamento griglie di vendita
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user