Sistemato riposizionamento UL
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-04-04 19:28:50 +02:00
parent e9d28c6f63
commit 54eb75a420
4 changed files with 261 additions and 198 deletions

View File

@@ -66,9 +66,9 @@ public class UtilityBarcodeEan128 {
switch (aiModel.AI) {
case SSCC:
if (!aiValue.isEmpty() && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
aiValue = aiValue.substring(1);
}
// if (!aiValue.isEmpty() && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
// aiValue = aiValue.substring(1);
// }
model.Sscc = aiValue;
break;
case GTIN:

View File

@@ -2,6 +2,8 @@ package it.integry.ems.retail.wms.Utility;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.exception.MissingDataException;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.retail.wms.dto.InsertUDCRowRequestDTO;
@@ -9,6 +11,7 @@ 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.service.WMSGiacenzaULService;
import it.integry.ems.rules.businessLogic.enums.FlagSezione;
import it.integry.ems.rules.completing.PackagesRules;
import it.integry.ems.service.EntityProcessor;
@@ -18,8 +21,8 @@ import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.commons.lang3.StringUtils;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.SQLException;
@@ -74,45 +77,103 @@ public class WMSUtility {
.setNumCnf(docr.getNumCnf().add(mtbColr.getNumCnf()));
}
public static void trasferisciPedane(MtbColt mtbColt, List<MtbTcol> listaPedane, DtbDoct dtbDoct) throws Exception {
public static void trasferisciPedane(MtbTcol pedana, DtbDoct dtbDoct) {
//<editor-fold desc="Trasferisco le pedane agganciate al collo se presenti e gestite a magazzino">
if (!UtilityString.isNullOrEmpty(mtbColt.getCodTcol()) && !UtilityList.isNullOrEmpty(listaPedane)) {
MtbTcol pedana = listaPedane.stream().filter(x -> x.getCodTcol().equalsIgnoreCase(mtbColt.getCodTcol())).findFirst().orElse(null);
if (!UtilityString.isNullOrEmpty(pedana)) {
DtbDocr docr = dtbDoct.getDtbDocr().stream()
.filter(row -> row.getCodMart().equalsIgnoreCase(pedana.getCodMart()))
.findFirst().orElse(null);
if (!UtilityString.isNullOrEmpty(pedana)) {
DtbDocr docr = dtbDoct.getDtbDocr().stream()
.filter(row -> row.getCodMart().equalsIgnoreCase(pedana.getCodMart()))
.findFirst().orElse(null);
if (docr == null) {
docr = new DtbDocr();
docr.setCodMart(pedana.getCodMart())
.setQtaDoc(BigDecimal.ZERO)
.setOperation(OperationType.INSERT);
if (docr == null) {
docr = new DtbDocr();
docr.setCodMart(pedana.getCodMart())
.setQtaDoc(BigDecimal.ZERO)
.setOperation(OperationType.INSERT);
dtbDoct.getDtbDocr().add(docr);
}
docr.setQtaDoc(docr.getQtaDoc().add(BigDecimal.ONE));
dtbDoct.getDtbDocr().add(docr);
}
docr.setQtaDoc(docr.getQtaDoc().add(BigDecimal.ONE));
}
//</editor-fold>
}
public static List<MtbTcol> getListaPedane(List<MtbColt> mtbCotlList, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
List<String> codTcolList = mtbCotlList.stream()
.filter(x -> !UtilityString.isNullOrEmpty(x.getCodTcol()))
.map(x -> UtilityDB.valueToString(x.getCodTcol()))
.distinct().collect(Collectors.toList());
public static HashMap<String, MtbTcol> getListaTipiColloByBarcodeUls(List<String> barcodeUls, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
@NotNull List<HashMap<String, Object>> barcodesWithCodTcol = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(),
"SELECT DISTINCT barcode_ul, cod_tcol FROM mtb_colt WHERE barcode_ul IN (" + UtilityQuery.concatStringFieldsWithSeparator(barcodeUls, ",") + ")");
List<MtbTcol> listaPedane = new ArrayList<>();
if (!codTcolList.isEmpty()) {
listaPedane = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), String.format(
"SELECT cod_tcol,cod_mart from mtb_tcol where cod_tcol in (%s)",
StringUtils.join(codTcolList, ",")
), MtbTcol.class);
if (barcodesWithCodTcol.isEmpty()) new HashMap<>();
List<String> codTcolList = barcodesWithCodTcol.stream()
.map(x -> UtilityHashMap.<String>getValueIfExists(x, "cod_tcol"))
.filter(x -> !UtilityString.isNullOrEmpty(x))
.collect(Collectors.toList());
if (codTcolList.isEmpty()) new HashMap<>();
final List<MtbTcol> mtbTcolList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), String.format(
"SELECT cod_tcol, " +
"cod_mart " +
"FROM mtb_tcol " +
"WHERE cod_tcol in (%s)",
UtilityQuery.concatStringFieldsWithSeparator(codTcolList, ",")
), MtbTcol.class);
if (mtbTcolList.isEmpty()) new HashMap<>();
HashMap<String, MtbTcol> mtbColtMap = new HashMap<>();
for (HashMap<String, Object> barcodeWithCodTcol : barcodesWithCodTcol) {
String barcodeUl = UtilityHashMap.getValueIfExists(barcodeWithCodTcol, "barcode_ul");
String codTcol = UtilityHashMap.getValueIfExists(barcodeWithCodTcol, "cod_tcol");
MtbTcol mtbTcol = null;
if (!UtilityString.isNullOrEmpty(codTcol)) {
mtbTcol = mtbTcolList.stream()
.filter(x -> x.getCodTcol().equalsIgnoreCase(codTcol))
.findFirst()
.orElse(null);
}
mtbColtMap.put(barcodeUl, mtbTcol);
}
return listaPedane;
return mtbColtMap;
}
public static List<MtbColr> createCambiaPosizioneUlMovement(Connection connection, String sscc, boolean changeCodMdep, String newCodMdep, String newPosizione) throws Exception {
return createCambiaPosizioneUlMovements(connection, Collections.singletonList(sscc), changeCodMdep, newCodMdep, newPosizione);
}
public static List<MtbColr> createCambiaPosizioneUlMovements(Connection connection, List<String> ssccList, boolean changeCodMdep, String newCodMdep, String newPosizione) throws Exception {
if (UtilityString.isNullOrEmpty(ssccList))
throw new MissingDataException("UL da aggiornare");
WMSGiacenzaULService wmsGiacenzaULService = ApplicationContextProvider.getApplicationContext().getBean(WMSGiacenzaULService.class);
final List<MvwSitArtUdcDetInventarioDTO> mvwSitArtUdcDetInventarioDTOS =
wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUls(connection, ssccList);
if (mvwSitArtUdcDetInventarioDTOS.isEmpty())
throw new Exception("Nessun articolo trovato per il barcode: " + ssccList);
final List<MtbColr> movementRows = mvwSitArtUdcDetInventarioDTOS.stream()
.map(x -> {
final MtbColr mtbColr = WMSUtility.convertMvwItemToMtbColr(x);
mtbColr.setPosizioneIn(newPosizione);
if(changeCodMdep) mtbColr.setCodMdepIn(newCodMdep);
mtbColr.setOperation(OperationType.INSERT);
return mtbColr;
})
.collect(Collectors.toList());
return movementRows;
}
public static boolean canULBeDeleted(MtbColt mtbColt, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
@@ -451,8 +512,6 @@ public class WMSUtility {
}
public static List<String> retrieveBarcodesInPosizione(Connection connection, String posizione) throws SQLException, IOException, PrimaryDatabaseNotPresentException {
String sql = "SELECT * FROM (" +
"SELECT barcode_ul FROM mtb_colt WHERE posizione = " + UtilityDB.valueToString(posizione) +

View File

@@ -35,7 +35,6 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
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.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.service.SetupGest;
@@ -1992,10 +1991,19 @@ public class WMSGenericService {
throw new Exception("Nessun deposito di arrivo selezionato");
}
List<MtbColt> mtbCotlList = requestDTO.getMtbColtsToMove();
mtbCotlList.stream().peek(x -> x.setOperation(OperationType.SELECT));
entityProcessor.processEntityList(mtbCotlList, true);
List<String> codMdeps = mtbCotlList.stream().map(MtbColt::getCodMdep).distinct().collect(Collectors.toList());
List<String> ulToMove = requestDTO.getMtbColtsToMove().stream()
.map(MtbColt::getBarcodeUl)
.distinct()
.collect(Collectors.toList());
final List<MvwSitArtUdcDetInventarioDTO> currentItemSituationList =
wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUls(multiDBTransactionManager.getPrimaryConnection(),
ulToMove);
List<String> codMdeps = currentItemSituationList.stream()
.map(MvwSitArtUdcDetInventarioDTO::getCodMdep)
.distinct()
.collect(Collectors.toList());
if (codMdeps.isEmpty()) {
throw new Exception("Nessun deposito di partenza selezionato!");
@@ -2072,7 +2080,7 @@ public class WMSGenericService {
entitiesToSave.add(dtbDoct);
}
List<MtbTcol> listaPedane = WMSUtility.getListaPedane(mtbCotlList, multiDBTransactionManager);
HashMap<String, MtbTcol> listaPedane = WMSUtility.getListaTipiColloByBarcodeUls(ulToMove, multiDBTransactionManager);
MtbColt uds = null;
if (!gestisciColli) {
@@ -2083,42 +2091,50 @@ public class WMSGenericService {
uds = wmsLavorazioneService.createUDS(createUDSRequest);
}
for (MtbColt mtbColtToMove : mtbCotlList) {
if (dtbDoct != null) {
for (MtbColr mtbColr : mtbColtToMove.getMtbColr()) {
if (!gestisciColli) {
InsertUDSRowRequestDTO insertUDSRowRequest = new InsertUDSRowRequestDTO();
insertUDSRowRequest
.setSourceMtbColr(mtbColr)
.setCodMart(mtbColr.getCodMart())
.setQtaTot(mtbColr.getQtaCol())
.setQtaCnf(mtbColr.getQtaCnf())
.setNumCnf(mtbColr.getNumCnf())
.setPartitaMag(mtbColr.getPartitaMag())
.setDataScad(mtbColr.getDataScadPartita())
.setTargetMtbColt(uds);
final MtbColt internalMovement = WMSUtility.createInternalMovement(codMdepPartenza);
entitiesToSave.add(internalMovement);
WMSUtility.createDtbDocrFromMtbColr(
dtbDoct,
wmsLavorazioneService.insertUDSRow(insertUDSRowRequest).getSavedMtbColr()
);
} else {
WMSUtility.createDtbDocrFromMtbColr(dtbDoct, mtbColr);
}
final List<MtbColr> cambiaPosizioneUlMovements =
WMSUtility.createCambiaPosizioneUlMovements(multiDBTransactionManager.getPrimaryConnection(),
ulToMove, codMdepPartenza != null && !codMdepPartenza.equalsIgnoreCase(requestDTO.getCodMdep()),
requestDTO.getCodMdep(), requestDTO.getPosizione());
internalMovement.getMtbColr().addAll(cambiaPosizioneUlMovements);
for (MvwSitArtUdcDetInventarioDTO rowToMove : currentItemSituationList) {
if (dtbDoct != null) {
final MtbColr mtbColr = WMSUtility.convertMvwItemToMtbColr(rowToMove);
if (!gestisciColli) {
InsertUDSRowRequestDTO insertUDSRowRequest = new InsertUDSRowRequestDTO();
insertUDSRowRequest
.setSourceMtbColr(mtbColr)
.setCodMart(rowToMove.getCodMart())
.setQtaTot(rowToMove.getQtaCol())
.setQtaCnf(rowToMove.getQtaCnf())
.setNumCnf(rowToMove.getNumCnf())
.setPartitaMag(rowToMove.getPartitaMag())
.setDataScad(rowToMove.getDataScad())
.setTargetMtbColt(uds);
WMSUtility.createDtbDocrFromMtbColr(
dtbDoct,
wmsLavorazioneService.insertUDSRow(insertUDSRowRequest).getSavedMtbColr()
);
} else {
WMSUtility.createDtbDocrFromMtbColr(dtbDoct, mtbColr);
}
WMSUtility.trasferisciPedane(mtbColtToMove, listaPedane, dtbDoct);
if (listaPedane.getOrDefault(rowToMove.getBarcodeUl(), null) != null) {
WMSUtility.trasferisciPedane(listaPedane.get(rowToMove.getBarcodeUl()), dtbDoct);
}
}
mtbColtToMove.setOperation(OperationType.UPDATE);
mtbColtToMove
.setMtbColr(new ArrayList<>())
.setPosizione(UtilityString.isNull(requestDTO.getPosizione(), EmsRestConstants.NULL))
.setCodMdep(requestDTO.getCodMdep());
entitiesToSave.add(mtbColtToMove);
}
if (dtbDoct != null && !UtilityString.isNullOrEmpty(requestDTO.getAnnotazioni())) {
DtbDocr dtbDocr = new DtbDocr()
.setDescrizione(UtilityString.substring(requestDTO.getAnnotazioni(), 0, 40))
@@ -2965,30 +2981,14 @@ public class WMSGenericService {
}
public void cambiaPosizioneUL(UpdatePosizioneULRequestDTO updatePosizioneULRequestDTO) throws Exception {
if (updatePosizioneULRequestDTO.getSscc() == null)
throw new MissingDataException("UL da aggiornare");
final List<MvwSitArtUdcDetInventarioDTO> mvwSitArtUdcDetInventarioDTOS =
wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUl(multiDBTransactionManager.getPrimaryConnection(), updatePosizioneULRequestDTO.getSscc());
final List<MtbColr> cambiaPosizioneUlMovements = WMSUtility.createCambiaPosizioneUlMovement(multiDBTransactionManager.getPrimaryConnection(),
updatePosizioneULRequestDTO.getSscc(),
false, null,
updatePosizioneULRequestDTO.getPosizione());
if (mvwSitArtUdcDetInventarioDTOS.isEmpty())
throw new Exception("Nessun articolo trovato per il barcode: " + updatePosizioneULRequestDTO.getSscc());
final MtbColt internalMovement = WMSUtility.createInternalMovement(userSession.getDefaultDepo().getCodMdep());
final List<MtbColr> movementRows = mvwSitArtUdcDetInventarioDTOS.stream()
.map(x -> {
final MtbColr mtbColr = WMSUtility.convertMvwItemToMtbColr(x);
mtbColr.setPosizioneIn(updatePosizioneULRequestDTO.getPosizione());
mtbColr.setOperation(OperationType.INSERT);
return mtbColr;
})
.collect(Collectors.toList());
internalMovement.setMtbColr(movementRows);
MtbColt internalMovement = WMSUtility.createInternalMovement(userSession.getDefaultDepo().getCodMdep());
internalMovement.setMtbColr(cambiaPosizioneUlMovements);
entityProcessor.processEntity(internalMovement, multiDBTransactionManager);
}

View File

@@ -1,7 +1,5 @@
package it.integry.ems.retail.wms.generic.service;
import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.retail.wms.generic.dto.ArtsInGiacenzaDTO;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
import it.integry.ems.retail.wms.generic.dto.RetrieveArtsInGiacenzaByArtRequestDTO;
@@ -9,16 +7,14 @@ import it.integry.ems.retail.wms.generic.dto.StatoArtInventarioDTO;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityQuery;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -80,11 +76,23 @@ public class WMSGiacenzaULService {
List<MvwSitArtUdcDetInventarioDTO> mvwSitArtUdcDetInventarioList = UtilityDB.executeSimpleQueryDTO(connection, sql, MvwSitArtUdcDetInventarioDTO.class);
Map<String, List<MvwSitArtUdcDetInventarioDTO>> groupedByCodMartAndPartitaMag =
mvwSitArtUdcDetInventarioList.stream()
.collect(Collectors.groupingBy(dto -> dto.getCodMart() + dto.getPartitaMag()));
if(mvwSitArtUdcDetInventarioList == null)
return new ArrayList<>();
return Stream.of(groupedByCodMartAndPartitaMag.entrySet())
Map<HashMap<String, Object>, List<MvwSitArtUdcDetInventarioDTO>> groupedByCodMartAndPartitaMag =
mvwSitArtUdcDetInventarioList.stream()
.collect(Collectors.groupingBy(dto -> new HashMap<String, Object>() {{
put("cod_jfas", dto.getCodJfas());
put("cod_prod", dto.getCodMart());
put("partita_mag", dto.getPartitaMag());
put("num_ord", dto.getNumOrd());
put("gestione", dto.getGestione());
put("data_ord", dto.getDataOrd());
}}));
return groupedByCodMartAndPartitaMag.entrySet().stream()
.map(entry -> {
List<MvwSitArtUdcDetInventarioDTO> dtoList = entry.getValue();
@@ -92,108 +100,96 @@ public class WMSGiacenzaULService {
.map(MvwSitArtUdcDetInventarioDTO::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
String codMart = dtoList.get(0).getCodMart();
String partitaMag = dtoList.get(0).getPartitaMag();
String codMart = UtilityHashMap.getValueIfExists(entry.getKey(), "cod_prod");
String partitaMag = UtilityHashMap.getValueIfExists(entry.getKey(), "partita_mag");
String posizione = dtoList.get(0).getPosizione();
String descrizioneEstesa = dtoList.get(0).getDescrizioneEstesa();
Integer numOrd = dtoList.get(0).getNumOrd();
Date dataOrd = dtoList.get(0).getDataOrd();
String query = "DECLARE @codjfas VARCHAR(5) = " + UtilityDB.valueToString(posizione) + ";\n" +
"WITH mtb_colr_sum AS (SELECT mtb_colt.posizione,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord,\n" +
" SUM(mtb_colr.qta_col) AS qta_col,\n" +
" SUM(mtb_colr.num_cnf) AS num_cnf\n" +
" FROM mtb_colr\n" +
" INNER JOIN mtb_colt ON mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
" WHERE EXISTS(SELECT *\n" +
" FROM mtb_colt\n" +
" WHERE mtb_colr.gestione = mtb_colt.gestione\n" +
" AND mtb_colr.data_collo = mtb_colt.data_collo\n" +
" AND mtb_colr.ser_collo = mtb_colt.ser_collo\n" +
" AND mtb_colr.num_collo = mtb_colt.num_collo\n" +
" AND mtb_colt.segno = 1)\n" +
" AND mtb_colt.num_ord = " + UtilityDB.valueToString(numOrd) + "\n" +
" AND mtb_colt.gestione = " + UtilityDB.valueToString(dtoList.get(0).getGestione()) + "\n" +
" AND mtb_colt.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND mtb_colr.cod_mart = " + UtilityDB.valueToString(codMart) + "\n" +
" GROUP BY mtb_colt.posizione,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord)\n" +
"\n" +
"SELECT dtb_ordt.cod_prod,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.data_ord,\n" +
" mtb_aart.unt_mis,\n" +
" ((dtb_ordt.qta_prod) * dtb_ordt.rap_conv_prod) qta_prod,\n" +
" dtb_ordr.num_cnf AS colli_prod,\n" +
" ROUND((dtb_ordr.num_cnf) / ISNULL(dtb_ordr.colli_pedana, mtb_aart.colli_pedana),\n" +
" 0) AS ped_prod,\n" +
" ((dtb_ordt.qta_prod) * dtb_ordt.rap_conv_prod) -\n" +
" SUM(mtb_colr_sum.qta_col) AS qta_in_arrivo,\n" +
" (dtb_ordr.num_cnf) -\n" +
" SUM(mtb_colr_sum.num_cnf) AS colli_arrivo,\n" +
" ROUND(((dtb_ordr.num_cnf) / ISNULL(dtb_ordr.colli_pedana, mtb_aart.colli_pedana)), 0) -\n" +
" SUM(CASE WHEN mtb_colr_sum.posizione = @codjfas THEN 1 ELSE 0 END)-\n" +
" SUM(CASE WHEN mtb_colr_sum.posizione = @codjfas THEN 0 ELSE 1 END) AS ped_arrivo,\n" +
" SUM(CASE\n" +
" WHEN mtb_colr_sum.posizione = @codjfas THEN mtb_colr_sum.qta_col\n" +
" ELSE 0 END) AS qta_linea,\n" +
" SUM(CASE\n" +
" WHEN mtb_colr_sum.posizione = @codjfas THEN mtb_colr_sum.num_cnf\n" +
" ELSE 0 END) AS colli_linea,\n" +
" SUM(CASE WHEN mtb_colr_sum.posizione = @codjfas THEN 1 ELSE 0 END) AS ped_linea,\n" +
" SUM(CASE\n" +
" WHEN mtb_colr_sum.posizione = @codjfas THEN 0\n" +
" ELSE mtb_colr_sum.qta_col END) AS qta_mag,\n" +
" SUM(CASE\n" +
" WHEN mtb_colr_sum.posizione = @codjfas THEN 0\n" +
" ELSE mtb_colr_sum.num_cnf END) AS colli_mag,\n" +
" SUM(CASE WHEN mtb_colr_sum.posizione = @codjfas THEN 0 ELSE 1 END) AS ped_mag\n" +
"FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordt.gestione_rif = dtb_ordr.gestione AND\n" +
" dtb_ordt.data_ord_rif = dtb_ordr.data_ord AND\n" +
" dtb_ordt.num_ord_rif = dtb_ordr.num_ord AND\n" +
" dtb_ordt.riga_ord_rif = dtb_ordr.riga_ord\n" +
" LEFT OUTER JOIN mtb_colr_sum ON dtb_ordt.gestione = mtb_colr_sum.gestione\n" +
" AND dtb_ordt.data_ord = mtb_colr_sum.data_ord\n" +
" AND dtb_ordt.num_ord = mtb_colr_sum.num_ord\n" +
" AND dtb_ordt.cod_prod = mtb_colr_sum.cod_mart\n" +
" INNER JOIN mtb_aart ON dtb_ordt.cod_prod = mtb_aart.cod_mart\n" +
"WHERE dtb_ordt.num_ord = " + UtilityDB.valueToString(numOrd) + "\n" +
" AND dtb_ordt.gestione = " + UtilityDB.valueToString(dtoList.get(0).getGestione()) + "\n" +
" AND dtb_ordt.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND dtb_ordt.cod_prod = " + UtilityDB.valueToString(codMart) + "\n" +
"GROUP BY dtb_ordt.cod_prod,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.data_ord,\n" +
" mtb_aart.unt_mis,\n" +
" dtb_ordt.qta_prod, mtb_aart.qta_cnf,\n" +
" dtb_ordt.rap_conv_prod,\n" +
" mtb_aart.colli_pedana, dtb_ordr.num_cnf, dtb_ordr.colli_pedana";
// String query = "DECLARE @codjfas VARCHAR(5) = " + UtilityDB.valueToString(posizione) + ";\n" +
// "WITH mtb_colr_sum AS (SELECT mtb_colt.posizione,\n" +
// " mtb_colt.gestione,\n" +
// " mtb_colt.data_collo,\n" +
// " mtb_colt.ser_collo,\n" +
// " mtb_colt.num_collo,\n" +
// " mtb_colr.cod_mart,\n" +
// " mtb_colr.data_ord,\n" +
// " mtb_colr.num_ord,\n" +
// " SUM(mtb_colr.qta_col) AS qta_col,\n" +
// " SUM(mtb_colr.num_cnf) AS num_cnf\n" +
// " FROM mtb_colr\n" +
// " INNER JOIN mtb_colt ON mtb_colt.gestione = mtb_colr.gestione\n" +
// " AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
// " AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
// " AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
// " WHERE EXISTS(SELECT *\n" +
// " FROM mtb_colt\n" +
// " WHERE mtb_colr.gestione = mtb_colt.gestione\n" +
// " AND mtb_colr.data_collo = mtb_colt.data_collo\n" +
// " AND mtb_colr.ser_collo = mtb_colt.ser_collo\n" +
// " AND mtb_colr.num_collo = mtb_colt.num_collo\n" +
// " AND mtb_colt.segno = 1)\n" +
// " GROUP BY mtb_colt.posizione,\n" +
// " mtb_colt.gestione,\n" +
// " mtb_colt.gestione,\n" +
// " mtb_colt.data_collo,\n" +
// " mtb_colt.ser_collo,\n" +
// " mtb_colt.num_collo,\n" +
// " mtb_colr.cod_mart,\n" +
// " mtb_colr.data_ord,\n" +
// " mtb_colr.num_ord)\n" +
// "\n" +
// "SELECT dtb_ordt.cod_prod,\n" +
// " dtb_ordt.num_ord,\n" +
// " dtb_ordt.data_ord,\n" +
// " mtb_aart.unt_mis,\n" +
// " ((dtb_ordt.qta_prod) * dtb_ordt.rap_conv_prod) qta_prod,\n" +
// " dtb_ordr.num_cnf AS colli_prod,\n" +
// " ROUND((dtb_ordr.num_cnf) / ISNULL(dtb_ordr.colli_pedana, mtb_aart.colli_pedana),\n" +
// " 0) AS ped_prod,\n" +
// " ((dtb_ordt.qta_prod) * dtb_ordt.rap_conv_prod) -\n" +
// " SUM(mtb_colr_sum.qta_col) AS qta_in_arrivo,\n" +
// " (dtb_ordr.num_cnf) -\n" +
// " SUM(mtb_colr_sum.num_cnf) AS colli_arrivo,\n" +
// " ROUND(((dtb_ordr.num_cnf) / ISNULL(dtb_ordr.colli_pedana, mtb_aart.colli_pedana)), 0) -\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, 1, 0)) -\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, 0, 1)) AS ped_arrivo,\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, mtb_colr_sum.qta_col, 0)) AS qta_linea,\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, mtb_colr_sum.num_cnf, 0)) AS colli_linea,\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, 1, 0)) AS ped_linea,\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, 0, mtb_colr_sum.qta_col)) AS qta_mag,\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, 0, mtb_colr_sum.num_cnf)) AS colli_mag,\n" +
// " SUM(IIF(mtb_colr_sum.posizione = @codjfas, 0, 1)) AS ped_mag\n" +
// "FROM dtb_ordt\n" +
// " INNER JOIN dtb_ordr ON dtb_ordt.gestione_rif = dtb_ordr.gestione AND\n" +
// " dtb_ordt.data_ord_rif = dtb_ordr.data_ord AND\n" +
// " dtb_ordt.num_ord_rif = dtb_ordr.num_ord AND\n" +
// " dtb_ordt.riga_ord_rif = dtb_ordr.riga_ord\n" +
// " LEFT OUTER JOIN mtb_colr_sum ON dtb_ordt.gestione = mtb_colr_sum.gestione\n" +
// " AND dtb_ordt.data_ord = mtb_colr_sum.data_ord\n" +
// " AND dtb_ordt.num_ord = mtb_colr_sum.num_ord\n" +
// " AND dtb_ordt.cod_prod = mtb_colr_sum.cod_mart\n" +
// " INNER JOIN mtb_aart ON dtb_ordt.cod_prod = mtb_aart.cod_mart\n" +
// "WHERE dtb_ordt.num_ord = " + UtilityDB.valueToString(numOrd) + "\n" +
// " AND dtb_ordt.gestione = " + UtilityDB.valueToString(dtoList.get(0).getGestione()) + "\n" +
// " AND dtb_ordt.data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + "\n" +
// " AND dtb_ordt.cod_prod = " + UtilityDB.valueToString(codMart) + "\n" +
// "GROUP BY dtb_ordt.cod_prod,\n" +
// " dtb_ordt.num_ord,\n" +
// " dtb_ordt.data_ord,\n" +
// " mtb_aart.unt_mis,\n" +
// " dtb_ordt.qta_prod, mtb_aart.qta_cnf,\n" +
// " dtb_ordt.rap_conv_prod,\n" +
// " mtb_aart.colli_pedana, dtb_ordr.num_cnf, dtb_ordr.colli_pedana";
StatoArtInventarioDTO statoArtInventarioDTO;
try {
statoArtInventarioDTO = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, query, StatoArtInventarioDTO.class);
} catch (Exception e) {
throw new RuntimeException(e);
}
// try {
// statoArtInventarioDTO = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, query, StatoArtInventarioDTO.class);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
return new ArtsInGiacenzaDTO()
.setCodMart(codMart)
@@ -204,10 +200,10 @@ public class WMSGiacenzaULService {
.setDataOrd(dataOrd)
.setNumCnf(totalNumCnf)
.setCount(dtoList.size())
.setStatoArtInventario(statoArtInventarioDTO)
// .setStatoArtInventario(statoArtInventarioDTO)
.setMvwSitArtUdcDetInventarioDTO(dtoList);
})
.toList();
.collect(Collectors.toList());
}
public List<MvwSitArtUdcDetInventarioDTO> retrieveArtsInGiacenzaByArticolo(Connection connection, String codMart, String partitaMag, String codMdep) throws Exception {
@@ -252,6 +248,14 @@ public class WMSGiacenzaULService {
return UtilityDB.executeSimpleQueryDTO(connection, sql, MvwSitArtUdcDetInventarioDTO.class);
}
public List<MvwSitArtUdcDetInventarioDTO> retrieveArtsInGiacenzaByBarcodeUls(Connection connection, List<String> barcodeUls) throws Exception {
String sql = createBaseQuery(true) +
" AND sit_art.barcode_ul IN (" + UtilityQuery.concatStringFieldsWithSeparator(barcodeUls, ", ") + ")";
return UtilityDB.executeSimpleQueryDTO(connection, sql, MvwSitArtUdcDetInventarioDTO.class);
}
public List<MvwSitArtUdcDetInventarioDTO> retrieveArtsInGiacenzaByArticoli(Connection connection, List<RetrieveArtsInGiacenzaByArtRequestDTO> inputData) throws Exception {
List<HashMap<String, Object>> whereCondMaps = inputData.stream()