diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java index 30f556b630..00c71191f5 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColr.java @@ -207,7 +207,7 @@ public class MtbColr extends EntityBase implements EquatableEntityInterface oldPkDoc = getOldPkDoc(dtbDoct); @@ -134,10 +138,8 @@ public class DocumentiDirettiService { } } } - multiDBTransactionManager.commitAll(); UtilityEntity.throwEntitiesException(entityRet); - return entityRet; } @@ -145,42 +147,106 @@ public class DocumentiDirettiService { private List checkUDSForTransfer(DtbDoct dtbDoct, List entityList, boolean isNewDoc) throws Exception { if (dtbDoct.getMtbColt().isEmpty() && isNewDoc) return null; - // - String whereCondColli = StringUtils.join(dtbDoct.getMtbColt().stream().filter(x -> x.getOperation() == null || !x.getOperation().equals(OperationType.DELETE)).map(ul -> { - try { - return String.format("(%s)", ul.getPkWhereCond()); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - }).collect(Collectors.toList()), " OR "); - List ulsToTransfer; - if (UtilityString.isNullOrEmpty(whereCondColli)) { - return null; - } - ulsToTransfer = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), Query.format( - "SELECT gestione,data_collo,ser_collo,num_collo,barcode_ul,cod_mdep from mvw_sitart_udc_det_inventario where cod_mdep <> {} and (" + whereCondColli + ")", dtbDoct.getCodMdep() - ), MtbColt.class); + if (UtilityList.isNullOrEmpty(dtbDoct.getMtbColt())) return null; + + // + + List ulsToTransfer = dtbDoct.getMtbColt().stream() + .filter(x -> x.getOperation() == null || !x.getOperation().equals(OperationType.DELETE)) + .map(x -> (MtbColt) x.clone()) + .peek(x -> x.setOperation(OperationType.SELECT_OBJECT)) + .collect(Collectors.toList()); if (UtilityList.isNullOrEmpty(ulsToTransfer)) return null; + entityProcessor.processEntityList(ulsToTransfer, multiDBTransactionManager, true); + + String selectMtbColrs = "SELECT * FROM " + MtbColr.ENTITY + " " + + "WHERE " + UtilityQuery.concatFieldListInWhereCond(ulsToTransfer.stream() + .map(x -> new HashMap() {{ + put("gestione", x.getGestione()); + put("ser_collo", x.getSerCollo()); + put("data_collo", x.getDataCollo()); + put("num_collo", x.getNumCollo()); + }}) + .collect(Collectors.toList())); + + final List mtbColrsToTransfer = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), selectMtbColrs, MtbColr.class); + + ulsToTransfer.forEach(mtbColt -> { + mtbColt.setMtbColr(mtbColrsToTransfer.stream() + .filter(mtbColr -> mtbColt.getKey().equals(mtbColr.getKey())) + .map(x -> (MtbColr) x.clone()) + .collect(Collectors.toList())); + }); // - List depositiPartenza = ulsToTransfer.stream().map(MtbColt::getCodMdep).distinct().collect(Collectors.toList()); + List depositiPartenza = ulsToTransfer.stream() + .map(MtbColt::getCodMdep) + .distinct() + .collect(Collectors.toList()); + for (String codMdep : depositiPartenza) { - SpostaUlRequestDTO transferRequest = new SpostaUlRequestDTO(); - transferRequest - .setCodMdep(dtbDoct.getCodMdep()) - .setCreateDocAutomatically(true) - .setAnnotazioni(String.format("Trasferimento per ordine di vendita n.%d del %s", dtbDoct.getNumOrd(), UtilityDate.formatDate(dtbDoct.getDataOrd(), CommonConstants.DATE_FORMAT_DMY))) - .setBarcodeUlList(ulsToTransfer.stream() - .filter(u -> u.getCodMdep().equals(codMdep)) - .map(MtbColt::getBarcodeUl) - .collect(Collectors.toList())); - wmsGenericService.spostaUL(transferRequest); + + List mtbColrsGroupedByDepoToTransfer = mtbColrsToTransfer.stream() + .filter(x -> x.getCodMdepOut().equals(codMdep)) + .peek(x -> x.setNumCollo(null) + .setDataCollo(null) + .setSerCollo(null) + .setGestione(null) + .setRiga(null) + .setBarcodeUlIn(x.getBarcodeUlOut()) + .setPosizioneIn(null) + .setCodMdepIn(dtbDoct.getCodMdep()) + .setGestioneRif(null) + .setDataColloRif(null) + .setNumColloRif(null) + .setSerColloRif(null) + .setOperation(OperationType.INSERT)) + .collect(Collectors.toList()); + + + MtbColt internalMovement = WMSUtility.createInternalMovement(multiDBTransactionManager.getPrimaryConnection(), dtbDoct.getCodMdep(), requestDataDTO.getUsername()); + internalMovement.setBarcodeUl(EmsRestConstants.NULL); + internalMovement.setMtbColr(mtbColrsGroupedByDepoToTransfer); + + entityProcessor.processEntity(internalMovement, multiDBTransactionManager); + + DtbDoct transferDocument = + WMSUtility.createTransferDocumentAndAttachToMovement(multiDBTransactionManager, setupGest, + internalMovement, null, codMdep, dtbDoct.getCodMdep(), null, + requestDataDTO.getUsername(), false, SpostaUlRequestDTO.TransferGroupPolicy.NONE); + + + entityProcessor.processEntity(transferDocument, multiDBTransactionManager); + + List udsGroupedByDepo = ulsToTransfer.stream() + .filter(x -> x.getCodMdep().equals(codMdep)) + .peek(x -> { + x.setCodMdep(dtbDoct.getCodMdep()); + x.setOperation(OperationType.INSERT_OR_UPDATE); + x.getMtbColr().forEach(mtbColr -> { + mtbColr.setOperation(OperationType.UPDATE); + mtbColr + .setCodMdepIn(EmsRestConstants.NULL) + .setCodMdepOut(dtbDoct.getCodMdep()) + .setPosizioneOut(EmsRestConstants.NULL) + .setGestioneRif(null) + .setDataColloRif(null) + .setNumColloRif(null) + .setSerColloRif(null); + }); + }) + .collect(Collectors.toList()); + + entityProcessor.processEntityList(udsGroupedByDepo, multiDBTransactionManager, true); + + UtilityEntity.throwEntitiesException(udsGroupedByDepo); } + return dtbDoct.getMtbColt(); } 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 e7d2b0bd6a..53bf0cd20f 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 @@ -6,14 +6,17 @@ import groovy.lang.Tuple2; import it.integry.ems._context.ApplicationContextProvider; import it.integry.ems.exception.MissingDataException; import it.integry.ems.javabeans.RequestDataDTO; -import it.integry.ems.retail.wms.dto.CreateUDCWithRowsRequestDTO; import it.integry.ems.retail.wms.dto.CreateUDCRequestDTO; +import it.integry.ems.retail.wms.dto.CreateUDCWithRowsRequestDTO; import it.integry.ems.retail.wms.dto.InsertUDCRowRequestDTO; import it.integry.ems.retail.wms.dto.InsertUDCRowResponseDTO; import it.integry.ems.retail.wms.exceptions.InvalidArticoloException; import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO; import it.integry.ems.retail.wms.generic.dto.SpostaArtsTraULResponseDTO; +import it.integry.ems.retail.wms.generic.dto.SpostaUlRequestDTO; import it.integry.ems.retail.wms.generic.service.WMSGiacenzaULService; +import it.integry.ems.rules.businessLogic.LoadColliService; +import it.integry.ems.rules.businessLogic.dto.LoadColliDTO; import it.integry.ems.rules.businessLogic.enums.FlagSezione; import it.integry.ems.rules.completing.PackagesRules; import it.integry.ems.service.EntityProcessor; @@ -21,13 +24,18 @@ import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityEntity; import it.integry.ems_model.entity.*; +import it.integry.ems_model.exception.ConverterNotConfiguredException; +import it.integry.ems_model.exception.RulesNotCompiledException; +import it.integry.ems_model.rulescompleting.DroolsDataCompleting; +import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.types.OperationType; -import it.integry.ems_model.utility.*; import it.integry.ems_model.utility.BarcodeEan128.Ean128Model; import it.integry.ems_model.utility.BarcodeEan128.UtilityBarcodeEan128; +import it.integry.ems_model.utility.*; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; +import java.io.IOException; import java.math.BigDecimal; import java.sql.SQLException; import java.time.LocalDate; @@ -39,15 +47,14 @@ import java.util.stream.Collectors; public class WMSUtility { - public static boolean isGestisciColli(MtbDepo mtbDepo, - EntityProcessor entityProcessor, - MultiDBTransactionManager multiDBTransactionManager) throws Exception { + public static boolean isGestisciColli(String codMdep, + Connection connection) throws Exception { - MtbDepoTipi mtbDepoTipi = new MtbDepoTipi(); - mtbDepoTipi.setCodTipoDepo(mtbDepo.getFlagTipoNegozio()) - .setOperation(OperationType.SELECT_OBJECT); + String selectSql = Query.format("SELECT " + MtbDepoTipi.ENTITY + ".* FROM mtb_depo " + + " INNER JOIN " + MtbDepoTipi.ENTITY + " ON mtb_depo.flag_tipo_negozio = mtb_depo_tipi.cod_tipo_depo " + + "WHERE cod_mdep = {}", codMdep); - entityProcessor.processEntity(mtbDepoTipi, true, multiDBTransactionManager); + final MtbDepoTipi mtbDepoTipi = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, selectSql, MtbDepoTipi.class); return mtbDepoTipi.getGestisciColli() == null || mtbDepoTipi.getGestisciColli(); } @@ -98,13 +105,13 @@ public class WMSUtility { dtbDoct.getDtbDocr().add(docr); } - docr.setQtaDoc(docr.getQtaDoc().add(UtilityBigDecimal.isNull(imballaggio.getNumPezzi(),BigDecimal.ONE))); + docr.setQtaDoc(docr.getQtaDoc().add(UtilityBigDecimal.isNull(imballaggio.getNumPezzi(), BigDecimal.ONE))); } // } - public static HashMap getListaTipiColloByBarcodeUls(List barcodeUls, MultiDBTransactionManager multiDBTransactionManager) throws Exception { - @NotNull List> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), + public static HashMap getListaTipiColloByBarcodeUls(List barcodeUls, Connection connection) throws Exception { + @NotNull List> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(connection, "SELECT DISTINCT barcode_ul, cod_tcol FROM mtb_colt WHERE barcode_ul IN (" + UtilityQuery.concatStringFieldsWithSeparator(barcodeUls, ",") + ")"); if (UtilityList.isNullOrEmpty(barcodesWithCodTcol)) return new HashMap<>(); @@ -116,7 +123,7 @@ public class WMSUtility { if (codTcolList.isEmpty()) return new HashMap<>(); - final List mtbTcolList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), String.format( + final List mtbTcolList = UtilityDB.executeSimpleQueryDTO(connection, String.format( "SELECT cod_tcol, " + "cod_mart " + "FROM mtb_tcol " + @@ -124,7 +131,7 @@ public class WMSUtility { UtilityQuery.concatStringFieldsWithSeparator(codTcolList, ",") ), MtbTcol.class); - if (UtilityList.isNullOrEmpty(mtbTcolList)) return new HashMap<>(); + if (UtilityList.isNullOrEmpty(mtbTcolList)) return new HashMap<>(); HashMap mtbColtMap = new HashMap<>(); @@ -451,7 +458,7 @@ public class WMSUtility { .setNote(insertUDCRowRequestDTO.getDescrizione()); } - if(insertUDCRowRequestDTO.getDocumentReso() != null) { + if (insertUDCRowRequestDTO.getDocumentReso() != null) { targetMtbColr.setCodAnagDoc(insertUDCRowRequestDTO.getDocumentReso().getCodAnag()) .setCodDtipDoc(insertUDCRowRequestDTO.getDocumentReso().getCodDtip()) .setSerDoc(insertUDCRowRequestDTO.getDocumentReso().getSerDoc()) @@ -575,11 +582,129 @@ public class WMSUtility { return barCodeList != null ? barCodeList : new ArrayList<>(); } - public static MtbColt createInternalMovement(String codMdep) { - return createInternalMovement(codMdep, null); + + public static DtbDoct createTransferDocumentAndAttachToMovement(MultiDBTransactionManager multiDBTransactionManager, SetupGest setupGest, MtbColt movementToAttach, + LocalDate dataTrasf, String codMdepPartenza, String codMdepArrivo, + String annotazioni, String username, + boolean groupDailyTransfer, SpostaUlRequestDTO.TransferGroupPolicy groupingPolicy) throws Exception { + + Connection connection = multiDBTransactionManager.getPrimaryConnection(); + String codDtipToUse = setupGest.getSetupDepo(connection, "PICKING", "LOGISTICA", "COD_DTIP_DOC_TRASF_INTERNI", codMdepArrivo); + + if (UtilityString.isNullOrEmpty(codDtipToUse)) + throw new Exception("La configurazione della setup gest non è completa per gestire gli spostamenti tra depositi"); + + String sql = Query.format( + "SELECT segno_qta_car - segno_qta_scar FROM dtb_tipi WHERE cod_dtip = %s", + codDtipToUse + ); + + short segno = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql); + String codMdepDoc; + String codAnag; + String codVdes; + + if (segno > 0) { + codMdepDoc = codMdepArrivo; + + MtbDepo mtbDepoPartenza = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, + Query.format("SELECT * FROM mtb_depo WHERE cod_mdep = {}", codMdepPartenza), MtbDepo.class); + + codAnag = mtbDepoPartenza.getCodAnag(); + codVdes = mtbDepoPartenza.getCodVdes(); + } else { + codMdepDoc = codMdepPartenza; + + MtbDepo mtbDepoArrivo = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, + Query.format("SELECT * FROM mtb_depo WHERE cod_mdep = {}", codMdepArrivo), MtbDepo.class); + + codAnag = mtbDepoArrivo.getCodAnag(); + codVdes = mtbDepoArrivo.getCodVdes(); + } + + LocalDate dataDoc = UtilityLocalDate.isNull(dataTrasf, UtilityLocalDate.getNow()); + + LoadColliDTO docTrasfRequest = new LoadColliDTO(); + docTrasfRequest + .setDataDoc(UtilityLocalDate.localDateToDate(dataDoc)) + .setCodDtip(codDtipToUse) + .setCodMdep(codMdepDoc) + .setCodAnag(codAnag) + .setCodVdes(codVdes) + .setNote(annotazioni); + + if (groupDailyTransfer) { + String queryDoc = Query.format("select cod_dtip, cod_anag, data_doc, ser_doc, num_doc\n" + + "from dtb_doct\n" + + "where cod_dtip = {}\n" + + " and data_doc = {}\n" + + " and cod_mdep = {}\n" + + " and cod_anag = {}\n" + + " and cod_vdes = {}", codDtipToUse, dataDoc, codMdepDoc, codAnag, codVdes); + switch (groupingPolicy) { + case BY_USER: + queryDoc = UtilityDB.addwhereCond(queryDoc, Query.format("user_name = {}", username), true); + break; + case NONE: + default: + break; + } + + DtbDoct existingDoc = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, queryDoc, DtbDoct.class); + if (existingDoc != null) { + docTrasfRequest + .setDataDoc(existingDoc.getDataDoc()) + .setSerDoc(existingDoc.getSerDoc()) + .setNumDoc(existingDoc.getNumDoc()) + .setCodDtip(existingDoc.getCodDtip()) + .setCodAnag(existingDoc.getCodAnag()); + } + } + + + docTrasfRequest.setColli(Collections.singletonList(movementToAttach)); + + LoadColliService loadColliService = ApplicationContextProvider.getApplicationContext().getBean(LoadColliService.class); + + DtbDoct docTrasf = loadColliService.createDocFromColli(multiDBTransactionManager, docTrasfRequest, false); + docTrasf.getDtbDocr().forEach(docr -> docr.setOperation(OperationType.INSERT_OR_UPDATE)); + + + HashMap listaPedane = WMSUtility.getListaTipiColloByBarcodeUls(Collections.singletonList(movementToAttach.getBarcodeUl()), connection); + HashMap listaImballi = WMSUtility.getListaTipiImballoByBarcodeUls(Collections.singletonList(movementToAttach.getBarcodeUl()), connection); + + + // + for (MtbColr rowMovimento : movementToAttach.getMtbColr()) { + if (listaPedane.getOrDefault(rowMovimento.getBarcodeUlOut(), null) != null) { + WMSUtility.trasferisciImballi(listaPedane.get(rowMovimento.getBarcodeUlOut()), docTrasf); + //rimuovo il barcode dalla lista di pallet da spostare per evitare che righe di moviemento create in più mtbColr moltiplichino il numero di pallet spostati + listaPedane.remove(rowMovimento.getBarcodeUlOut()); + } + if (listaImballi.getOrDefault(rowMovimento.getBarcodeUlOut(), null) != null) { + WMSUtility.trasferisciImballi(listaImballi.get(rowMovimento.getBarcodeUlOut()), docTrasf); + //rimuovo il barcode dalla lista di pallet da spostare per evitare che righe di moviemento create in più mtbColr moltiplichino il numero di pallet spostati + listaImballi.remove(rowMovimento.getBarcodeUlOut()); + } + } + // + if (!UtilityString.isNullOrEmpty(annotazioni)) { + DtbDocr dtbDocr = new DtbDocr() + .setDescrizione(UtilityString.substring(annotazioni, 0, 40)) + .setDescrizioneEstesa(annotazioni); + dtbDocr.setOperation(OperationType.INSERT); + + docTrasf.getDtbDocr().add(dtbDocr); + } + + return docTrasf; } - public static MtbColt createInternalMovement(String codMdep, LocalDate dataCollo) { + public static MtbColt createInternalMovement(Connection connection, String codMdep, String username) throws RulesNotCompiledException, SQLException, IOException, IllegalAccessException, ConverterNotConfiguredException { + return createInternalMovement(connection, codMdep, null, username); + } + + public static MtbColt createInternalMovement(Connection connection, String codMdep, LocalDate dataCollo, String username) throws RulesNotCompiledException, SQLException, IOException, IllegalAccessException, ConverterNotConfiguredException { MtbColt mtbColt = new MtbColt() .setGestione("L") .setSegno(1) @@ -588,6 +713,9 @@ public class WMSUtility { mtbColt.setOperation(OperationType.INSERT); + final DroolsDataCompleting dataCompleting = ApplicationContextProvider.getApplicationContext().getBean(DroolsDataCompleting.class); + dataCompleting.complete(mtbColt, connection, username); + return mtbColt; } @@ -659,8 +787,8 @@ public class WMSUtility { } - public static HashMap getListaTipiImballoByBarcodeUls(List barcodeUls, MultiDBTransactionManager multiDBTransactionManager) throws Exception { - @NotNull List> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), + public static HashMap getListaTipiImballoByBarcodeUls(List barcodeUls, Connection connection) throws Exception { + @NotNull List> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(connection, "select barcode_ul, mtb_aart.cod_tcol_UI as cod_tcol\n" + "from mtb_colt\n" + " inner join mtb_colr on mtb_colt.gestione = mtb_colr.gestione and mtb_colt.data_collo = mtb_colr.data_collo and\n" + @@ -678,7 +806,7 @@ public class WMSUtility { if (codTcolList.isEmpty()) return new HashMap<>(); - final List mtbTcolList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), String.format( + final List mtbTcolList = UtilityDB.executeSimpleQueryDTO(connection, String.format( "SELECT cod_tcol, " + "cod_mart " + "FROM mtb_tcol " + diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java index 5d8d1446b1..c8e4beb77f 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java @@ -30,7 +30,6 @@ import it.integry.ems.retail.wms.generic.dto.picking_list.SitArtOrdAccettazioneD import it.integry.ems.retail.wms.generic.dto.picking_list.SitArtOrdDTO; import it.integry.ems.retail.wms.lavorazione.service.WMSLavorazioneService; import it.integry.ems.rules.businessLogic.LoadColliService; -import it.integry.ems.rules.businessLogic.dto.LoadColliDTO; import it.integry.ems.rules.completing.PackagesRules; import it.integry.ems.service.AziendaService; import it.integry.ems.service.EntityProcessor; @@ -2075,13 +2074,7 @@ public class WMSGenericService { throw new Exception("Le UL selezionate provengono da depositi differenti"); } - MtbDepo mtbDepoArrivo = new MtbDepo(); - mtbDepoArrivo.setCodMdep(requestDTO.getCodMdep()) - .setOperation(OperationType.SELECT_OBJECT); - - entityProcessor.processEntity(mtbDepoArrivo, true, multiDBTransactionManager); - - boolean gestisciColli = WMSUtility.isGestisciColli(mtbDepoArrivo, entityProcessor, multiDBTransactionManager); + boolean gestisciColli = WMSUtility.isGestisciColli(requestDTO.getCodMdep(), multiDBTransactionManager.getPrimaryConnection()); if (!UtilityString.isNullOrEmpty(requestDTO.getPosizione())) { MtbDepoPosizioni mtbDepoPosizioni = new MtbDepoPosizioni() @@ -2096,93 +2089,15 @@ public class WMSGenericService { } } String codMdepPartenza = codMdeps.get(0); - String codMdepDoc = codMdepPartenza; - LoadColliDTO docTrasfRequest = null; - // - - // - if (requestDTO.isCreateDocAutomatically() && !UtilityString.equalsIgnoreCase(codMdepPartenza, requestDTO.getCodMdep())) { - - String codDtipToUse = setupGest.getSetupDepo(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "LOGISTICA", "COD_DTIP_DOC_TRASF_INTERNI", requestDTO.getCodMdep()); - - if (UtilityString.isNullOrEmpty(codDtipToUse)) - throw new Exception("La configurazione della setup gest non è completa per gestire gli spostamenti tra depositi"); - - String codAnag = mtbDepoArrivo.getCodAnag(); - String codVdes = mtbDepoArrivo.getCodVdes(); - - String sql = Query.format( - "SELECT segno_qta_car - segno_qta_scar FROM dtb_tipi WHERE cod_dtip = %s", - codDtipToUse - ); - - short segno = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); - - if (segno > 0) { - codMdepDoc = mtbDepoArrivo.getCodMdep(); - - MtbDepo mtbDepoPartenza = new MtbDepo(); - mtbDepoPartenza.setCodMdep(codMdepPartenza) - .setOperation(OperationType.SELECT_OBJECT); - - entityProcessor.processEntity(mtbDepoPartenza, true, multiDBTransactionManager); - - codAnag = mtbDepoPartenza.getCodAnag(); - codVdes = mtbDepoPartenza.getCodVdes(); - } - - LocalDate dataDoc = UtilityLocalDate.isNull(requestDTO.getDataTrasf(), UtilityLocalDate.getNowTime()).toLocalDate(); - - docTrasfRequest = new LoadColliDTO(); - docTrasfRequest - .setDataDoc(UtilityLocalDate.localDateToDate(dataDoc)) - .setCodDtip(codDtipToUse) - .setCodMdep(codMdepDoc) - .setCodAnag(codAnag) - .setCodVdes(codVdes) - .setNote(requestDTO.getAnnotazioni()); - - if (requestDTO.isGroupDailyTransfers()) { - String queryDoc = Query.format("select cod_dtip, cod_anag, data_doc, ser_doc, num_doc\n" + - "from dtb_doct\n" + - "where cod_dtip = {}\n" + - " and data_doc = {}\n" + - " and cod_mdep = {}\n" + - " and cod_anag = {}\n" + - " and cod_vdes = {}", codDtipToUse, dataDoc, codMdepDoc, codAnag, codVdes); - switch (requestDTO.getGroupingPolicy()) { - case BY_USER: - queryDoc = UtilityDB.addwhereCond(queryDoc, Query.format("user_name = {}", requestDataDTO.getUsername()), true); - break; - case NONE: - default: - break; - } - - DtbDoct existingDoc = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), queryDoc, DtbDoct.class); - if (existingDoc != null) { - docTrasfRequest - .setDataDoc(existingDoc.getDataDoc()) - .setSerDoc(existingDoc.getSerDoc()) - .setNumDoc(existingDoc.getNumDoc()) - .setCodDtip(existingDoc.getCodDtip()) - .setCodAnag(existingDoc.getCodAnag()); - } - } - - - } + String codMdepArrivo = requestDTO.getCodMdep(); // // MtbColt movimento; - HashMap listaPedane = WMSUtility.getListaTipiColloByBarcodeUls(ulToMove, multiDBTransactionManager); - HashMap listaImballi = WMSUtility.getListaTipiImballoByBarcodeUls(ulToMove, multiDBTransactionManager); - // if (gestisciColli) { - movimento = WMSUtility.createInternalMovement(codMdepDoc, requestDTO.getDataTrasf() != null ? requestDTO.getDataTrasf().toLocalDate() : null); + movimento = WMSUtility.createInternalMovement(multiDBTransactionManager.getPrimaryConnection(), codMdepPartenza, requestDTO.getDataTrasf() != null ? requestDTO.getDataTrasf().toLocalDate() : null, requestDataDTO.getUsername()); final List cambiaPosizioneUlMovements = WMSUtility.createCambiaPosizioneUlMovements(multiDBTransactionManager.getPrimaryConnection(), @@ -2196,7 +2111,7 @@ public class WMSGenericService { .getMtbColr().addAll(cambiaPosizioneUlMovements); } else { //se non gestisco i colli sul deposito creo il movimento di solo scarico CreateUDSRequestDTO createUDSRequest = new CreateUDSRequestDTO(); - createUDSRequest.setCodMdep(codMdepDoc) + createUDSRequest.setCodMdep(codMdepPartenza) .setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO); if (requestDTO.getDataTrasf() != null) { @@ -2225,40 +2140,19 @@ public class WMSGenericService { } entityProcessor.processEntity(movimento, true, multiDBTransactionManager); // + // - if (docTrasfRequest != null) { - docTrasfRequest.setColli(Collections.singletonList(movimento)); - DtbDoct docTrasf = loadColliService.createDocFromColli(multiDBTransactionManager, docTrasfRequest, false); - docTrasf.getDtbDocr().forEach(docr -> docr.setOperation(OperationType.INSERT_OR_UPDATE)); + if (requestDTO.isCreateDocAutomatically() && !UtilityString.equalsIgnoreCase(codMdepPartenza, codMdepArrivo)) { + DtbDoct transferDocument = + WMSUtility.createTransferDocumentAndAttachToMovement(multiDBTransactionManager, setupGest, movimento, requestDTO.getDataTrasf() != null ? requestDTO.getDataTrasf().toLocalDate() : null, + codMdepPartenza, codMdepArrivo, requestDTO.getAnnotazioni(), requestDataDTO.getUsername(), requestDTO.isGroupDailyTransfers(), requestDTO.getGroupingPolicy()); - - // - for (MtbColr rowMovimento : movimento.getMtbColr()) { - if (listaPedane.getOrDefault(rowMovimento.getBarcodeUlOut(), null) != null) { - WMSUtility.trasferisciImballi(listaPedane.get(rowMovimento.getBarcodeUlOut()), docTrasf); - //rimuovo il barcode dalla lista di pallet da spostare per evitare che righe di moviemento create in più mtbColr moltiplichino il numero di pallet spostati - listaPedane.remove(rowMovimento.getBarcodeUlOut()); - } - if (listaImballi.getOrDefault(rowMovimento.getBarcodeUlOut(), null) != null) { - WMSUtility.trasferisciImballi(listaImballi.get(rowMovimento.getBarcodeUlOut()), docTrasf); - //rimuovo il barcode dalla lista di pallet da spostare per evitare che righe di moviemento create in più mtbColr moltiplichino il numero di pallet spostati - listaImballi.remove(rowMovimento.getBarcodeUlOut()); - } - } - // - if (!UtilityString.isNullOrEmpty(requestDTO.getAnnotazioni())) { - DtbDocr dtbDocr = new DtbDocr() - .setDescrizione(UtilityString.substring(requestDTO.getAnnotazioni(), 0, 40)) - .setDescrizioneEstesa(requestDTO.getAnnotazioni()); - dtbDocr.setOperation(OperationType.INSERT); - - docTrasf.getDtbDocr().add(dtbDocr); - } - entityProcessor.processEntity(docTrasf, true, multiDBTransactionManager); + entityProcessor.processEntity(transferDocument, true, multiDBTransactionManager); } // + // // UtilityEntity.throwEntitiesException(entitiesToSave); @@ -2886,7 +2780,7 @@ public class WMSGenericService { } } - mtbColt = WMSUtility.createInternalMovement(codMdep, dataCollo) + mtbColt = WMSUtility.createInternalMovement(multiDBTransactionManager.getPrimaryConnection(), codMdep, dataCollo, requestDataDTO.getUsername()) .setDataOrd(order != null ? UtilityLocalDate.localDateFromDate(order.getDataOrd()) : null) .setNumOrd(order != null ? order.getNumOrd() : null) .setCodJfas(order != null ? order.getCodJfas() : null) @@ -3080,7 +2974,7 @@ public class WMSGenericService { updatePosizioneULRequestDTO.getPosizione()); MtbDepoPosizioni posizione = WMSUtility.getPosizioneFromName(multiDBTransactionManager.getPrimaryConnection(), updatePosizioneULRequestDTO.getPosizione()); - MtbColt internalMovement = WMSUtility.createInternalMovement(posizione.getCodMdep()); + MtbColt internalMovement = WMSUtility.createInternalMovement(multiDBTransactionManager.getPrimaryConnection(), posizione.getCodMdep(), requestDataDTO.getUsername()); internalMovement.setMtbColr(cambiaPosizioneUlMovements); entityProcessor.processEntity(internalMovement, true, multiDBTransactionManager); diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSMaterialiService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSMaterialiService.java index 80a045f744..6d430702db 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSMaterialiService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSMaterialiService.java @@ -1,5 +1,6 @@ package it.integry.ems.retail.wms.lavorazione.service; +import it.integry.ems.javabeans.RequestDataDTO; import it.integry.ems.production.service.MesProductionServiceV2; import it.integry.ems.retail.wms.Utility.WMSUtility; import it.integry.ems.retail.wms.exceptions.InvalidArticoloException; @@ -54,6 +55,8 @@ public class WMSMaterialiService { private UserSession userSession; private final Logger logger = LogManager.getLogger(); + @Autowired + private RequestDataDTO requestDataDTO; public VersaMaterialiResponseDTO versa(VersaMaterialiRequestDTO request) throws Exception { final boolean versamentoDirettoEnabled = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "PICKING", "PRODUZIONE", "FLAG_VERSAMENTO_DIRETTO"); @@ -102,7 +105,7 @@ public class WMSMaterialiService { if (posizioneVersamento == null) throw new Exception("Posizione di versamento non trovata (" + request.getPosizioneVersamento() + ")"); - MtbColt internalMovement = WMSUtility.createInternalMovement(itemDaVersare.getCodMdep()) + MtbColt internalMovement = WMSUtility.createInternalMovement(multiDBTransactionManager.getPrimaryConnection(), itemDaVersare.getCodMdep(), requestDataDTO.getUsername()) .setSegno(-1) .setPosizione(posizioneVersamento.getPosizione()); diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/resi/controller/WMSResiClientiController.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/resi/controller/WMSResiClientiController.java index a1c8d99c11..7f50204b66 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/resi/controller/WMSResiClientiController.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/resi/controller/WMSResiClientiController.java @@ -39,7 +39,7 @@ public class WMSResiClientiController { @GetMapping(value = "retrieve-ultime-consegne") public @ResponseBody ServiceRestResponse retrieveUltimeConsegne(@RequestParam(CommonConstants.PROFILE_DB) String profileDB, - @RequestParam String codMdep, + @RequestParam(required = false) String codMdep, @RequestParam(required = false) String codAnag, @RequestParam(required = false) String codMart, @RequestParam(required = false) Integer limitConsegnePerCli, diff --git a/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java b/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java index 2074853b88..ee4e97b0a9 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java +++ b/ems-engine/src/main/java/it/integry/ems/system/controller/SystemController.java @@ -1163,7 +1163,8 @@ public class SystemController { } else { PrinterService.Type[] types = PrinterService.Type.values(); for (PrinterService.Type type : types) { - printers.add(printerService.getPrinterNameByDepo(multiDBTransactionManager.getPrimaryConnection(), codMdep, null, type)); + final String printerNameByDepo = printerService.getPrinterNameByDepo(multiDBTransactionManager.getPrimaryConnection(), codMdep, null, type); + if(printerNameByDepo != null) printers.add(printerNameByDepo); } }