Merge remote-tracking branch 'origin/feature/RefactoringGestioneColli' into feature/RefactoringGestioneColli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -207,7 +207,7 @@ public class MtbColr extends EntityBase implements EquatableEntityInterface<MtbC
|
||||
|
||||
|
||||
public MtbColrKey getKey() {
|
||||
return new MtbColrKey(gestione, serCollo, getDataCollo(), numCollo, riga);
|
||||
return new MtbColrKey(gestione, serCollo, dataCollo, numCollo, riga);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.document.dto.CreateULFromDocumentsDTO;
|
||||
import it.integry.ems.document.service.DocumentiDirettiService;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.entity.DtbDoct;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
@@ -15,16 +16,25 @@ import javax.servlet.http.HttpServletRequest;
|
||||
@Scope("request")
|
||||
@RequestMapping("documenti-diretti")
|
||||
public class DocumentiDirettiController {
|
||||
|
||||
@Autowired
|
||||
private DocumentiDirettiService documentiDirettiService;
|
||||
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
@RequestMapping(value = "insert", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse insert(HttpServletRequest request,
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody DtbDoct dtbDoct) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(documentiDirettiService.save(dtbDoct, true));
|
||||
try {
|
||||
return ServiceRestResponse.createPositiveResponse(documentiDirettiService.save(dtbDoct, true));
|
||||
} catch (Exception e) {
|
||||
multiDBTransactionManager.rollbackAll();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "update", method = RequestMethod.POST)
|
||||
@@ -33,7 +43,12 @@ public class DocumentiDirettiController {
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody DtbDoct dtbDoct) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(documentiDirettiService.save(dtbDoct, false));
|
||||
try {
|
||||
return ServiceRestResponse.createPositiveResponse(documentiDirettiService.save(dtbDoct, false));
|
||||
} catch (Exception e) {
|
||||
multiDBTransactionManager.rollbackAll();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "delete", method = RequestMethod.POST)
|
||||
@@ -42,7 +57,12 @@ public class DocumentiDirettiController {
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestBody DtbDoct dtbDoct) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(documentiDirettiService.delete(dtbDoct));
|
||||
try {
|
||||
return ServiceRestResponse.createPositiveResponse(documentiDirettiService.delete(dtbDoct));
|
||||
} catch (Exception e) {
|
||||
multiDBTransactionManager.rollbackAll();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "createULFromDocument", method = RequestMethod.POST)
|
||||
|
||||
@@ -20,6 +20,7 @@ import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
import it.integry.ems_model.entity.*;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
@@ -85,14 +86,17 @@ public class DocumentiDirettiService {
|
||||
if (gestione.equalsIgnoreCase("V") &&
|
||||
TipoEmissione.valueOf(UtilityHashMap.getValueIfExists(datiTipoDoc, "tipo_emissione")) == TipoEmissione.DIRETTA &&
|
||||
!dtbDoct.getDtbDocImb().isEmpty() && salvaImballiAttiva) {
|
||||
saveDocImballi(dtbDoct, entityList, isInsert);
|
||||
|
||||
saveDocImballi(dtbDoct, entityList, isInsert);
|
||||
}
|
||||
|
||||
//controllo packingList documento per eventuali trasferimenti
|
||||
if (gestione.equalsIgnoreCase("V")) {
|
||||
checkUDSForTransfer(dtbDoct, entityList, isInsert);
|
||||
}
|
||||
|
||||
//TODO: Aggiungere versamento in nuova UDC per pedane mezze
|
||||
|
||||
if (UtilityString.equalsIgnoreCase((String) datiTipoDoc.get("gestione"), "A")) {
|
||||
if (!isInsert && dtbDoct.getOldPk() != null) {
|
||||
HashMap<String, Object> 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<MtbColt> checkUDSForTransfer(DtbDoct dtbDoct, List<EntityBase> entityList, boolean isNewDoc) throws Exception {
|
||||
if (dtbDoct.getMtbColt().isEmpty() && isNewDoc)
|
||||
return null;
|
||||
//<editor-fold desc="Prendo tutti i colli, con le quantità associate che devono essere trasferite">
|
||||
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<MtbColt> 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;
|
||||
|
||||
//<editor-fold desc="Prendo tutti i colli, con le quantità associate che devono essere trasferite">
|
||||
|
||||
List<MtbColt> 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<String, Object>() {{
|
||||
put("gestione", x.getGestione());
|
||||
put("ser_collo", x.getSerCollo());
|
||||
put("data_collo", x.getDataCollo());
|
||||
put("num_collo", x.getNumCollo());
|
||||
}})
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
final List<MtbColr> 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()));
|
||||
});
|
||||
|
||||
//</editor-fold>
|
||||
|
||||
List<String> depositiPartenza = ulsToTransfer.stream().map(MtbColt::getCodMdep).distinct().collect(Collectors.toList());
|
||||
List<String> 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<MtbColr> 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<MtbColt> 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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
//</editor-fold>
|
||||
}
|
||||
|
||||
public static HashMap<String, MtbTcol> getListaTipiColloByBarcodeUls(List<String> barcodeUls, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
@NotNull List<HashMap<String, Object>> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(),
|
||||
public static HashMap<String, MtbTcol> getListaTipiColloByBarcodeUls(List<String> barcodeUls, Connection connection) throws Exception {
|
||||
@NotNull List<HashMap<String, Object>> 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<MtbTcol> mtbTcolList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), String.format(
|
||||
final List<MtbTcol> 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<String, MtbTcol> 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<String, MtbTcol> listaPedane = WMSUtility.getListaTipiColloByBarcodeUls(Collections.singletonList(movementToAttach.getBarcodeUl()), connection);
|
||||
HashMap<String, MtbTcol> listaImballi = WMSUtility.getListaTipiImballoByBarcodeUls(Collections.singletonList(movementToAttach.getBarcodeUl()), connection);
|
||||
|
||||
|
||||
//<editor-fold desc="Trasferimento pallet">
|
||||
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());
|
||||
}
|
||||
}
|
||||
//</editor-fold>
|
||||
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<String, MtbTcol> getListaTipiImballoByBarcodeUls(List<String> barcodeUls, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
@NotNull List<HashMap<String, Object>> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(),
|
||||
public static HashMap<String, MtbTcol> getListaTipiImballoByBarcodeUls(List<String> barcodeUls, Connection connection) throws Exception {
|
||||
@NotNull List<HashMap<String, Object>> 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<MtbTcol> mtbTcolList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), String.format(
|
||||
final List<MtbTcol> mtbTcolList = UtilityDB.executeSimpleQueryDTO(connection, String.format(
|
||||
"SELECT cod_tcol, " +
|
||||
"cod_mart " +
|
||||
"FROM mtb_tcol " +
|
||||
|
||||
@@ -5,6 +5,8 @@ import it.integry.ems.retail.wms.generic.dto.SaveTrasferimentoRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSTrasferimentoService;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
import it.integry.ems_model.entity.key.DtbDoctKey;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
@Scope("request")
|
||||
@RequestMapping("wms/trasferimento")
|
||||
public class WMSTrasferimentoController {
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
@Autowired
|
||||
@@ -24,14 +27,23 @@ public class WMSTrasferimentoController {
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
|
||||
|
||||
|
||||
@PostMapping(value = "save")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse save(@RequestBody SaveTrasferimentoRequestDTO requestData) throws Exception {
|
||||
MtbColt generatedMovement = wmsTrasferimentoService.saveTrasferimento(multiDBTransactionManager.getPrimaryConnection(), requestData.getCodMdepDest(), requestData.getBarcodeUlList());
|
||||
|
||||
generatedMovement.setOperation(OperationType.SELECT_OBJECT);
|
||||
return ServiceRestResponse.createPositiveResponse(generatedMovement);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "print-document")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse save(@RequestParam String printerName,
|
||||
@RequestBody DtbDoctKey documentToPrint) throws Exception {
|
||||
wmsTrasferimentoService.printDocument(multiDBTransactionManager.getPrimaryConnection(), documentToPrint, printerName);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
//</editor-fold>
|
||||
|
||||
//<editor-fold desc="inizializzazione eventuale documento di trasferimento">
|
||||
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();
|
||||
//</editor-fold>
|
||||
|
||||
//<editor-fold desc="Trasferimento UL">
|
||||
MtbColt movimento;
|
||||
|
||||
HashMap<String, MtbTcol> listaPedane = WMSUtility.getListaTipiColloByBarcodeUls(ulToMove, multiDBTransactionManager);
|
||||
HashMap<String, MtbTcol> listaImballi = WMSUtility.getListaTipiImballoByBarcodeUls(ulToMove, multiDBTransactionManager);
|
||||
|
||||
//<editor-fold desc="Creazione movimento di magazzino">
|
||||
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<MtbColr> 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);
|
||||
//</editor-fold>
|
||||
|
||||
//<editor-fold desc="Creazione documento di trasferimento se necessario">
|
||||
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());
|
||||
|
||||
|
||||
//<editor-fold desc="Trasferimento pallet">
|
||||
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());
|
||||
}
|
||||
}
|
||||
//</editor-fold>
|
||||
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);
|
||||
|
||||
}
|
||||
//</editor-fold>
|
||||
|
||||
//</editor-fold>
|
||||
|
||||
// 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);
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
package it.integry.ems.retail.wms.generic.service;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.report.dto.JasperDTO;
|
||||
import it.integry.ems.report.dto.PairsDTO;
|
||||
import it.integry.ems.retail.wms.generic.dto.SpostaUlRequestDTO;
|
||||
import it.integry.ems.service.PrinterService;
|
||||
import it.integry.ems.service.ReportProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems_model.entity.MtbColt;
|
||||
import it.integry.ems_model.entity.key.DtbDoctKey;
|
||||
import it.integry.ems_model.utility.Query;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import org.apache.pdfbox.printing.Orientation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@@ -16,6 +28,12 @@ public class WMSTrasferimentoService {
|
||||
@Autowired
|
||||
private WMSGenericService wmsGenericService;
|
||||
|
||||
@Autowired
|
||||
private ReportProcessor reportProcessor;
|
||||
|
||||
@Autowired
|
||||
private PrinterService printerService;
|
||||
|
||||
public MtbColt saveTrasferimento(Connection primaryConnection, String codMdepDest, List<String> barcodeUlList) throws Exception {
|
||||
return wmsGenericService.spostaUL(new SpostaUlRequestDTO() {{
|
||||
setCodMdep(codMdepDest);
|
||||
@@ -24,4 +42,39 @@ public class WMSTrasferimentoService {
|
||||
setGroupDailyTransfers(false);
|
||||
}});
|
||||
}
|
||||
|
||||
public void printDocument(Connection primaryConnection, DtbDoctKey documentToPrint, String printerName) throws Exception {
|
||||
|
||||
String sql = Query.format("SELECT wtb_jrept.id\n" +
|
||||
"FROM dtb_tipi\n" +
|
||||
" INNER JOIN dtb_mod_stampa ON mod_stamp = mod_stampa\n" +
|
||||
" INNER JOIN wtb_jrept ON id = report_id\n" +
|
||||
"WHERE cod_dtip = %s", documentToPrint.getCodDtip());
|
||||
Long reportId = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(primaryConnection, sql);
|
||||
|
||||
if (reportId == null) {
|
||||
throw new Exception("Nessun report associato al tipo documento " + documentToPrint.getCodDtip());
|
||||
}
|
||||
|
||||
List<PairsDTO> documentReportData = new ArrayList<PairsDTO>() {{
|
||||
add(new PairsDTO("cod_dtip", documentToPrint.getCodDtip()));
|
||||
add(new PairsDTO("cod_anag", documentToPrint.getCodAnag()));
|
||||
add(new PairsDTO("num_doc", String.valueOf(documentToPrint.getNumDoc())));
|
||||
add(new PairsDTO("ser_doc", documentToPrint.getSerDoc()));
|
||||
add(new PairsDTO("data_doc", CommonConstants.DATE_YMD_DASHED_FORMATTER.format(documentToPrint.getDataDoc())));
|
||||
}};
|
||||
|
||||
final byte[] documentReportResult = reportProcessor.processReport(new JasperDTO() {{
|
||||
setReportId(reportId);
|
||||
setParams(documentReportData);
|
||||
}});
|
||||
|
||||
if(documentReportResult == null || documentReportResult.length == 0) {
|
||||
throw new Exception("Impossibile generare la stampa del documento " + documentToPrint.getCodDtip() + " " + documentToPrint.getNumDoc());
|
||||
}
|
||||
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(documentReportResult);
|
||||
printerService.print(printerName, bais, MediaType.APPLICATION_PDF_VALUE, Orientation.AUTO);
|
||||
bais.close();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user