From fc1477979beabe2bbb5b8340f9b107b8fc162bb9 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 13 Mar 2024 11:05:32 +0100 Subject: [PATCH] Aggiunto AvailableClassMercDTO in OrdiniDiLavorazione --- .../production/dto/OrdineLavorazioneDTO.java | 37 +++++++++++ .../ProductionOrderDataHandlerService.java | 65 +++++++++++++++++-- 2 files changed, 98 insertions(+), 4 deletions(-) diff --git a/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java b/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java index 73cbea7d81..9f9ab103f8 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/production/dto/OrdineLavorazioneDTO.java @@ -3,10 +3,12 @@ package it.integry.ems.production.dto; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import it.integry.ems.adapter.JsonDateAdapterSerializer; +import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoDTO; import it.integry.ems_model.annotation.SqlField; import java.math.BigDecimal; import java.util.Date; +import java.util.List; public class OrdineLavorazioneDTO { @@ -358,6 +360,8 @@ public class OrdineLavorazioneDTO { @JsonSerialize private Integer idLotto; + private List availableClassMerc; + public Date getDataOrdProd() { return dataOrdProd; } @@ -934,4 +938,37 @@ public class OrdineLavorazioneDTO { this.maxFase = maxFase; return this; } + + public List getAvailableClassMerc() { + return availableClassMerc; + } + + public OrdineLavorazioneDTO setAvailableClassMerc(List availableClassMerc) { + this.availableClassMerc = availableClassMerc; + return this; + } + + public static class AvailableClassMercDTO { + + private String codMgrp; + private List codMsgr; + + public String getCodMgrp() { + return codMgrp; + } + + public AvailableClassMercDTO setCodMgrp(String codMgrp) { + this.codMgrp = codMgrp; + return this; + } + + public List getCodMsgr() { + return codMsgr; + } + + public AvailableClassMercDTO setCodMsgr(List codMsgr) { + this.codMsgr = codMsgr; + return this; + } + } } \ No newline at end of file diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java index c039847ba0..6b32ca290a 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrderDataHandlerService.java @@ -5,6 +5,8 @@ import it.integry.annotations.PostContextConstruct; import it.integry.common.var.CommonConstants; import it.integry.ems.looper.service.LooperService; import it.integry.ems.production.dto.OrdineLavorazioneDTO; +import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoDTO; +import it.integry.ems.retail.pvmRetail.dto.OrdineInevasoGroupMercDTO; import it.integry.ems.settings.Model.AvailableConnectionsModel; import it.integry.ems.settings.Model.SettingsModel; import it.integry.ems.settings.SettingsController; @@ -13,6 +15,7 @@ import it.integry.ems.utility.UtilityDebug; import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDate; +import it.integry.ems_model.utility.UtilityQuery; import it.integry.ems_model.utility.UtilityString; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -476,10 +479,10 @@ public class ProductionOrderDataHandlerService { " ORDER BY dtb_ordr.data_ord, dtb_ordr.num_ord, dtb_ordr.pos_riga, dtb_ordt.num_ord"; } - List ordiniInevasiList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class); + List ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class); - if (ordiniInevasiList != null && ordiniInevasiList.size() > 0) { - for (OrdineLavorazioneDTO ordineDTO : ordiniInevasiList) { + if (ordiniLavorazioneList != null && !ordiniLavorazioneList.isEmpty()) { + for (OrdineLavorazioneDTO ordineDTO : ordiniLavorazioneList) { if (ordineDTO.getStato().equalsIgnoreCase("IN CORSO")) { @@ -511,7 +514,61 @@ public class ProductionOrderDataHandlerService { } } - return ordiniInevasiList; + if (ordiniLavorazioneList == null || ordiniLavorazioneList.isEmpty()) + return null; + + List> orderKeys = Stream.of(ordiniLavorazioneList) + .map(x -> { + HashMap orderKey = new HashMap<>(); + + orderKey.put("dtb_ordr.gestione", x.getGestione()); + orderKey.put("dtb_ordr.num_ord", x.getNumOrd()); + orderKey.put("dtb_ordr.data_ord", x.getDataOrd()); + + return orderKey; + }).toList(); + + String sql = "SELECT DISTINCT data_ord,\n" + + " num_ord,\n" + + " gestione,\n" + + " dtb_ordr.cod_mart,\n" + + " mtb_aart.cod_mgrp,\n" + + " mtb_aart.cod_msgr\n" + + "FROM dtb_ordr\n" + + " INNER JOIN mtb_aart on dtb_ordr.cod_mart = mtb_aart.cod_mart\n" + + "WHERE dtb_ordr.flag_evaso = 'I'\n" + + " AND dtb_ordr.flag_evaso_forzato = 'N'" + + " AND (" + UtilityQuery.concatFieldListInWhereCond(orderKeys) + ")"; + + List grpMerc = + UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, OrdineInevasoGroupMercDTO.class); + + if (grpMerc == null || grpMerc.isEmpty()) + return ordiniLavorazioneList; + + Stream.of(ordiniLavorazioneList) + .forEach(order -> { + final Map> groups = grpMerc.stream() + .filter(x -> Objects.equals(x.getNumOrd(), order.getNumOrd()) && + x.getDataOrd().equals(order.getDataOrd()) && + x.getGestione().equalsIgnoreCase(order.getGestione())) + .collect(Collectors.groupingBy(OrdineInevasoGroupMercDTO::getCodMgrp)); + + if (!groups.isEmpty()) { + order.setAvailableClassMerc(new ArrayList<>()); + + for (Map.Entry> entry : groups.entrySet()) { + order.getAvailableClassMerc() + .add(new OrdineLavorazioneDTO.AvailableClassMercDTO() + .setCodMgrp(entry.getKey()) + .setCodMsgr(entry.getValue().stream() + .map(OrdineInevasoGroupMercDTO::getCodMsgr) + .collect(Collectors.toList()))); + } + } + }); + + return ordiniLavorazioneList; }