From aae80b698e8b33e606d05c3822e33ebfd307044a Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 9 Dec 2025 13:19:53 +0100 Subject: [PATCH] Aggiunto blocco inserimento righe uds in caso di anomalia sulla ul --- .../retail/pvmRetail/service/PvmService.java | 2 - .../ems/retail/wms/Utility/WMSUtility.java | 36 +++++++++---- .../wms/accettazione/dto/AnomaliaUlDTO.java | 54 +++++++++++++++++++ .../service/WMSLavorazioneService.java | 5 ++ .../vendita/service/WMSSpedizioneService.java | 5 ++ 5 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/dto/AnomaliaUlDTO.java diff --git a/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java b/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java index fc57d5e5fc..b052d1d647 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java @@ -1674,8 +1674,6 @@ public class PvmService { if (getColloInGiacResponse != null) { getColloInGiacResponse.getMtbColt().setOnlyPkMaster(false); getColloInGiacResponse.getMtbColt().setOperation(OperationType.SELECT_OBJECT); - } else { - getColloInGiacResponse = new GetColloInGiacResponseDTO(); } return getColloInGiacResponse; diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/Utility/WMSUtility.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/Utility/WMSUtility.java index a040cc8877..416b157c90 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/Utility/WMSUtility.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/Utility/WMSUtility.java @@ -7,6 +7,7 @@ import it.integry.ems._context.ApplicationContextProvider; import it.integry.ems.dynamic_cache.EntityCacheComponent; import it.integry.ems.exception.MissingDataException; import it.integry.ems.javabeans.RequestDataDTO; +import it.integry.ems.retail.wms.accettazione.dto.AnomaliaUlDTO; import it.integry.ems.retail.wms.dto.*; import it.integry.ems.retail.wms.exceptions.InvalidArticoloException; import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO; @@ -52,7 +53,8 @@ public class WMSUtility { final MtbDepoTipi mtbDepoTipi = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, selectSql, MtbDepoTipi.class); - if (mtbDepoTipi == null) throw new Exception("Informazioni sul tipo deposito non specificate per il deposito: "+codMdep); + if (mtbDepoTipi == null) + throw new Exception("Informazioni sul tipo deposito non specificate per il deposito: " + codMdep); return mtbDepoTipi.getGestisciColli() == null || mtbDepoTipi.getGestisciColli(); } @@ -109,7 +111,7 @@ public class WMSUtility { } public static HashMap getListaTipiColloByBarcodeUls(List barcodeUls, Connection connection) throws Exception { - if(barcodeUls == null || barcodeUls.isEmpty()) return new HashMap<>(); + if (barcodeUls == null || barcodeUls.isEmpty()) return new HashMap<>(); @NotNull List> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(connection, "SELECT DISTINCT barcode_ul, cod_tcol FROM mtb_colt WHERE barcode_ul IN (" + UtilityQuery.concatStringFieldsWithSeparator(barcodeUls, ",") + ")"); @@ -380,7 +382,6 @@ public class WMSUtility { } - public static List createCambiaPosizioneUlMovement(Connection connection, String sscc, boolean changeCodMdep, String newCodMdep, String newPosizione) throws Exception { return createCambiaPosizioneUlMovements(connection, Collections.singletonList(sscc), changeCodMdep, newCodMdep, newPosizione); } @@ -539,9 +540,9 @@ public class WMSUtility { .setOperation(OperationType.UPDATE); - if(useRequestUsername) + if (useRequestUsername) stornoSourceMtbColr - .setUtente(requestDataDTO.getUsername()); + .setUtente(requestDataDTO.getUsername()); mtbColrSourceList.add(stornoSourceMtbColr); } @@ -578,7 +579,7 @@ public class WMSUtility { .setPosizioneIn(destinationPosizione) .setOperation(OperationType.INSERT_OR_UPDATE); - if(useRequestUsername) + if (useRequestUsername) cloneMtbColr .setUtente(requestDataDTO.getUsername()); @@ -677,9 +678,9 @@ public class WMSUtility { .setNote(insertUDCRowRequestDTO.getAnnotazioni()) .setNumEtich(insertUDCRowRequestDTO.getNumEtich()); - if (insertUDCRowRequestDTO.getCodDtip() != null){ - targetMtbColr.setCodAnagDoc(insertUDCRowRequestDTO.getTargetMtbColt().getCodAnag()); - } + if (insertUDCRowRequestDTO.getCodDtip() != null) { + targetMtbColr.setCodAnagDoc(insertUDCRowRequestDTO.getTargetMtbColt().getCodAnag()); + } targetMtbColr.setBarcodeUlIn(UtilityString.isNull(insertUDCRowRequestDTO.getCustomBarcodeUlIn(), targetMtbColt.getBarcodeUl())) .setCodMdepIn(UtilityString.isNull(insertUDCRowRequestDTO.getCustomCodMdepIn(), targetMtbColt.getCodMdep())) @@ -1084,6 +1085,21 @@ public class WMSUtility { public static List retrieveUlsByBarcodes(Connection connection, List barcodeList) throws Exception { if (barcodeList == null || barcodeList.isEmpty()) return new ArrayList<>(); - return UtilityDB.executeSimpleQueryDTO(connection,Query.format("SELECT * from mtb_colt where barcode_ul in ("+UtilityDB.listValueToString(barcodeList)+")"), MtbColt.class); + return UtilityDB.executeSimpleQueryDTO(connection, Query.format("SELECT * from mtb_colt where barcode_ul in (" + UtilityDB.listValueToString(barcodeList) + ")"), MtbColt.class); + } + + public static AnomaliaUlDTO getAnomaliaUl(Connection connection, MtbColt mtbColt) { + String sql = Query.format( + "SELECT mtb_anomalie_ul.descrizione AS descrizione_anomalia,\n" + + " mtb_livelli_anomalie.descrizione AS descrizione_livello_anomalia,\n" + + " escludi_picking_vendita,\n" + + " escludi_picking_lavorazione\n" + + "FROM mtb_colt\n" + + " LEFT OUTER JOIN mtb_anomalie_ul ON id_anomalia = mtb_anomalie_ul.id\n" + + " LEFT OUTER JOIN mtb_livelli_anomalie ON mtb_livelli_anomalie.id = mtb_anomalie_ul.id_livello_anomalia\n" + + "WHERE barcode_ul = %s", mtbColt.getBarcodeUl() + ); + + return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, sql, AnomaliaUlDTO.class).getDescrizioneAnomalia(); } } diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/dto/AnomaliaUlDTO.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/dto/AnomaliaUlDTO.java new file mode 100644 index 0000000000..52f979dbcc --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/dto/AnomaliaUlDTO.java @@ -0,0 +1,54 @@ +package it.integry.ems.retail.wms.accettazione.dto; + +import it.integry.ems_model.annotation.SqlField; + +public class AnomaliaUlDTO { + + @SqlField("descrizione_anomalia") + private String descrizioneAnomalia; + + @SqlField("descrizione_livello_anomalia") + private String descrizioneLivelloAnomalia; + + @SqlField("escludi_picking_vendita") + private Boolean escludiPickingVendita; + + @SqlField("escludi_picking_lavorazione") + private Boolean escludiPickingLavorazione; + + public String getDescrizioneAnomalia() { + return descrizioneAnomalia; + } + + public AnomaliaUlDTO setDescrizioneAnomalia(String descrizioneAnomalia) { + this.descrizioneAnomalia = descrizioneAnomalia; + return this; + } + + public String getDescrizioneLivelloAnomalia() { + return descrizioneLivelloAnomalia; + } + + public AnomaliaUlDTO setDescrizioneLivelloAnomalia(String descrizioneLivelloAnomalia) { + this.descrizioneLivelloAnomalia = descrizioneLivelloAnomalia; + return this; + } + + public Boolean getEscludiPickingVendita() { + return escludiPickingVendita; + } + + public AnomaliaUlDTO setEscludiPickingVendita(Boolean escludiPickingVendita) { + this.escludiPickingVendita = escludiPickingVendita; + return this; + } + + public Boolean getEscludiPickingLavorazione() { + return escludiPickingLavorazione; + } + + public AnomaliaUlDTO setEscludiPickingLavorazione(Boolean escludiPickingLavorazione) { + this.escludiPickingLavorazione = escludiPickingLavorazione; + return this; + } +} diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java index 6edee39bfd..6eb57d872e 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java @@ -6,6 +6,7 @@ import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO; import it.integry.ems.product.importaz.service.ProductServices; import it.integry.ems.retail.wms.Utility.WMSUtility; +import it.integry.ems.retail.wms.accettazione.dto.AnomaliaUlDTO; import it.integry.ems.retail.wms.colli.service.WMSColliService; import it.integry.ems.retail.wms.dto.*; import it.integry.ems.retail.wms.exceptions.InvalidArticoloException; @@ -161,6 +162,10 @@ public class WMSLavorazioneService { entityProcessor.processEntity(targetMtbColt, multiDBTransactionManager); targetMtbColt.setOperation(OperationType.NO_OP); + AnomaliaUlDTO anomaliaUl = WMSUtility.getAnomaliaUl(multiDBTransactionManager.getPrimaryConnection(), targetMtbColt); + if (anomaliaUl.getEscludiPickingLavorazione()) + throw new Exception(anomaliaUl.getDescrizioneAnomalia()); + insertUDSRowRequestDTO.setTargetMtbColt(targetMtbColt); InsertUDSRowResponseDTO generatedMovement = WMSUtility.insertUDSLavorazioneRowMovement(multiDBTransactionManager.getPrimaryConnection(), insertUDSRowRequestDTO, userSession.getUsername()); diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/vendita/service/WMSSpedizioneService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/vendita/service/WMSSpedizioneService.java index 54c1cb6136..7c426898b7 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/vendita/service/WMSSpedizioneService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/vendita/service/WMSSpedizioneService.java @@ -8,6 +8,7 @@ import it.integry.ems.retail.pvmRetail.dto.save.DocFromPickingDTO; import it.integry.ems.retail.pvmRetail.service.PvmServiceSave; import it.integry.ems.retail.wms.Utility.WMSUtility; import it.integry.ems.retail.wms.accettazione.dto.AlreadyRegisteredUlDTO; +import it.integry.ems.retail.wms.accettazione.dto.AnomaliaUlDTO; import it.integry.ems.retail.wms.colli.service.WMSColliService; import it.integry.ems.retail.wms.dto.*; import it.integry.ems.retail.wms.exceptions.InvalidArticoloException; @@ -249,6 +250,10 @@ public class WMSSpedizioneService { entityProcessor.processEntity(targetMtbColt, multiDBTransactionManager); targetMtbColt.setOperation(OperationType.NO_OP); + AnomaliaUlDTO anomaliaUl = WMSUtility.getAnomaliaUl(multiDBTransactionManager.getPrimaryConnection(), targetMtbColt); + if (anomaliaUl.getEscludiPickingLavorazione()) + throw new Exception(anomaliaUl.getDescrizioneAnomalia()); + insertUDSRowRequestDTO.setTargetMtbColt(targetMtbColt); InsertUDSRowResponseDTO generatedMovement = insertUDSRowMovement(insertUDSRowRequestDTO);