diff --git a/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java b/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java index e642473d11..1e5f027f3c 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java +++ b/ems-engine/src/main/java/it/integry/ems/product/controller/ListiniVenditaController.java @@ -4,6 +4,7 @@ import it.integry.common.var.CommonConstants; import it.integry.ems.product.dto.DuplicaListinoDTO; import it.integry.ems.product.dto.InsertPromoRequestDTO; import it.integry.ems.product.dto.InsertPromoResponseDTO; +import it.integry.ems.product.dto.InsertVariazioniRequestDTO; import it.integry.ems.product.importaz.dto.Lisv4LisaDTO; import it.integry.ems.product.importaz.service.Lisv4LisaService; import it.integry.ems.product.service.ListiniVenditaServices; @@ -100,10 +101,10 @@ public class ListiniVenditaController { } @RequestMapping(value = "insertVariazioni", method = RequestMethod.POST) - public ServiceRestResponse insertPromo(@RequestParam(CommonConstants.PROFILE_DB) String config, - @RequestBody List mtbLisvData) throws Exception { + public ServiceRestResponse insertVariazioni(@RequestParam(CommonConstants.PROFILE_DB) String config, + @RequestBody InsertVariazioniRequestDTO insertVariazioniRequestDTO) throws Exception { - return ServiceRestResponse.createPositiveResponse(listiniVenditaServices.inserisciVariazioni(mtbLisvData)); + return ServiceRestResponse.createPositiveResponse(listiniVenditaServices.inserisciVariazioni(insertVariazioniRequestDTO)); } @RequestMapping(value = "aggiorna4Lisa", method = RequestMethod.POST) diff --git a/ems-engine/src/main/java/it/integry/ems/product/dto/InsertVariazioniRequestDTO.java b/ems-engine/src/main/java/it/integry/ems/product/dto/InsertVariazioniRequestDTO.java new file mode 100644 index 0000000000..7be4645b36 --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/product/dto/InsertVariazioniRequestDTO.java @@ -0,0 +1,43 @@ +package it.integry.ems.product.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import it.integry.ems_model.entity.MtbLisvData; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +public class InsertVariazioniRequestDTO { + + private LocalDate dataValidita; + + private List listini; + private List mtbLisvData; + + public LocalDate getDataValidita() { + return dataValidita; + } + + public InsertVariazioniRequestDTO setDataValidita(LocalDate dataValidita) { + this.dataValidita = dataValidita; + return this; + } + + public List getListini() { + return listini; + } + + public InsertVariazioniRequestDTO setListini(List listini) { + this.listini = listini; + return this; + } + + public List getMtbLisvData() { + return mtbLisvData; + } + + public InsertVariazioniRequestDTO setMtbLisvData(List mtbLisvData) { + this.mtbLisvData = mtbLisvData; + return this; + } +} diff --git a/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java b/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java index 0d3a002aec..ca52d2211c 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java +++ b/ems-engine/src/main/java/it/integry/ems/product/service/ListiniVenditaServices.java @@ -3,12 +3,10 @@ package it.integry.ems.product.service; import com.annimon.stream.Stream; import it.integry.common.var.CommonConstants; import it.integry.ems.Import.dto.AnomalieDTO; +import it.integry.ems.document.service.ManutenzioneProduzioniService; import it.integry.ems.exception.MissingDataException; import it.integry.ems.javabeans.RequestDataDTO; -import it.integry.ems.product.dto.DuplicaListinoDTO; -import it.integry.ems.product.dto.InsertPromoRequestDTO; -import it.integry.ems.product.dto.InsertPromoResponseDTO; -import it.integry.ems.product.dto.ListiniVenditaAllinePrezziDTO; +import it.integry.ems.product.dto.*; import it.integry.ems.product.importaz.service.ImportAnagListiniService; import it.integry.ems.product.importaz.service.ImportListiniVenditaService; import it.integry.ems.service.EmsServices; @@ -68,6 +66,7 @@ public class ListiniVenditaServices { private final Logger logger = LogManager.getLogger(); @Autowired private SetupGest setupGest; + private ManutenzioneProduzioniService manutenzioneProduzioniService; public void allinemanetoPrezziArtEqui(Date dataValidita, ListiniVenditaAllinePrezziDTO datiInput) throws Exception { @@ -917,21 +916,41 @@ public class ListiniVenditaServices { return InsertPromoResponse; } - public List inserisciVariazioni(List mtbLisvData) throws Exception { - Map> elencoVariazioni = mtbLisvData.stream().collect(Collectors.groupingBy( - x -> new VtbListData() - .setCodVlis(x.getCodVlis()) - .setDataIniz(x.getDataIniz()) - )); + public List inserisciVariazioni(InsertVariazioniRequestDTO insertVariazioniRequestDTO) throws Exception { + if (insertVariazioniRequestDTO.getMtbLisvData().stream().anyMatch(x->UtilityString.isNullOrEmpty(x.getCodVlis())) && + (insertVariazioniRequestDTO.getListini() == null || insertVariazioniRequestDTO.getListini().isEmpty()) ) { + throw new Exception("Inserire almeno un listino o un articolo con codice listino"); + } List entityList = new ArrayList<>(); - for (VtbListData vtbListData : elencoVariazioni.keySet()) { - vtbListData.setOperation(OperationType.INSERT_OR_UPDATE); - List mtbLisvDataList = elencoVariazioni.get(vtbListData); - mtbLisvDataList.stream().forEach(x->x.setOperation(OperationType.INSERT_OR_UPDATE)); - vtbListData.setMtbLisvData(mtbLisvDataList); - entityList.add(vtbListData); + if (insertVariazioniRequestDTO.getMtbLisvData().stream().anyMatch(x->!UtilityString.isNullOrEmpty(x.getCodVlis())) ) { + Map> elencoVariazioni = insertVariazioniRequestDTO.getMtbLisvData().stream().collect(Collectors.groupingBy( + x -> new VtbListData() + .setCodVlis(x.getCodVlis()) + .setDataIniz(x.getDataIniz()==null? + UtilityLocalDate.localDateToDate(insertVariazioniRequestDTO.getDataValidita()) + : x.getDataIniz()) + )); + + + for (VtbListData vtbListData : elencoVariazioni.keySet()) { + vtbListData.setOperation(OperationType.INSERT_OR_UPDATE); + List mtbLisvDataList = elencoVariazioni.get(vtbListData); + mtbLisvDataList.stream().forEach(x -> x.setOperation(OperationType.INSERT_OR_UPDATE)); + vtbListData.setMtbLisvData(mtbLisvDataList); + entityList.add(vtbListData); + } + } else { + for (String codVlis : insertVariazioniRequestDTO.getListini()) { + VtbListData vtbListData = new VtbListData() + .setCodVlis(codVlis) + .setDataIniz(UtilityLocalDate.localDateToDate(insertVariazioniRequestDTO.getDataValidita())); + vtbListData.setMtbLisvData(insertVariazioniRequestDTO.getMtbLisvData()); + vtbListData.setOperation(OperationType.INSERT_OR_UPDATE); + entityList.add(vtbListData); + } + } List entityRet = entityProcessor.processEntityList(entityList, true);