Migliorato servizio di retrieve UL in posizione con relativo stato
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-04-05 12:14:11 +02:00
parent 54eb75a420
commit b65d35cfd6
2 changed files with 152 additions and 99 deletions

View File

@@ -9,34 +9,55 @@ public class StatoArtInventarioDTO {
@SqlField("cod_prod")
private String codProd;
@SqlField("num_ord")
private Integer numOrd;
@SqlField("data_ord")
private Date dataOrd;
@SqlField("gestione")
private String gestione;
@SqlField("cod_jfas")
private String codJfas;
@SqlField("unt_mis")
private String untMis;
@SqlField("qta_prod")
private BigDecimal qtaProd;
@SqlField("colli_prod")
private BigDecimal colliProd;
@SqlField("ped_prod")
private BigDecimal pedProd;
@SqlField("qta_in_arrivo")
private BigDecimal qtaInArrivo;
@SqlField("colli_arrivo")
private BigDecimal colliArrivo;
@SqlField("ped_arrivo")
private BigDecimal pedArrivo;
@SqlField("qta_linea")
private BigDecimal qtaLinea;
@SqlField("colli_linea")
private BigDecimal colliLinea;
@SqlField("ped_linea")
private Integer pedLinea;
@SqlField("qta_mag")
private BigDecimal qtaMag;
@SqlField("colli_mag")
private BigDecimal colliMag;
@SqlField("ped_mag")
private Integer pedMag;
@@ -58,6 +79,24 @@ public class StatoArtInventarioDTO {
return this;
}
public String getGestione() {
return gestione;
}
public StatoArtInventarioDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public String getCodJfas() {
return codJfas;
}
public StatoArtInventarioDTO setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getUntMis() {
return untMis;
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems.retail.wms.generic.service;
import core.utility.StringUtils;
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;
@@ -74,122 +75,135 @@ public class WMSGiacenzaULService {
String sql = createBaseQuery(withTestataCollo) +
" AND sit_art.posizione IN (" + UtilityDB.listValueToString(positions) + ")";
if(withTestataCollo)
sql += " AND mtb_colt.num_ord IS NOT NULL";
List<MvwSitArtUdcDetInventarioDTO> mvwSitArtUdcDetInventarioList = UtilityDB.executeSimpleQueryDTO(connection, sql, MvwSitArtUdcDetInventarioDTO.class);
if(mvwSitArtUdcDetInventarioList == null)
if (mvwSitArtUdcDetInventarioList == null)
return new ArrayList<>();
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());
put("dtb_ordt.cod_jfas", dto.getCodJfas());
put("dtb_ordt.cod_prod", dto.getCodMart());
put("dtb_ordt.partita_mag", dto.getPartitaMag());
put("dtb_ordt.num_ord", dto.getNumOrd());
put("dtb_ordt.gestione", dto.getGestione());
put("dtb_ordt.data_ord", dto.getDataOrd());
}}));
String whereCond = UtilityQuery.concatFieldListInWhereCond(new ArrayList<>(groupedByCodMartAndPartitaMag.keySet()));
String statoOrdiniSql = "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" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordt.gestione,\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 = dtb_ordt.cod_jfas, 1, 0)) -\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, 0, 1)) AS ped_arrivo,\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, mtb_colr_sum.qta_col, 0)) AS qta_linea,\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, mtb_colr_sum.num_cnf, 0)) AS colli_linea,\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, 1, 0)) AS ped_linea,\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, 0, mtb_colr_sum.qta_col)) AS qta_mag,\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, 0, mtb_colr_sum.num_cnf)) AS colli_mag,\n" +
" SUM(IIF(mtb_colr_sum.posizione = dtb_ordt.cod_jfas, 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 " + whereCond + " " +
"GROUP BY dtb_ordt.cod_prod,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordt.gestione,\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";
final List<StatoArtInventarioDTO> statoArtsInventario = UtilityDB.executeSimpleQueryDTO(connection, statoOrdiniSql, StatoArtInventarioDTO.class);
if (statoArtsInventario == null)
return new ArrayList<>();
return groupedByCodMartAndPartitaMag.entrySet().stream()
.map(entry -> {
List<MvwSitArtUdcDetInventarioDTO> dtoList = entry.getValue();
String codMart = UtilityHashMap.getValueIfExists(entry.getKey(), "dtb_ordt.cod_prod");
String partitaMag = UtilityHashMap.getValueIfExists(entry.getKey(), "dtb_ordt.partita_mag");
String posizione = dtoList.get(0).getPosizione();
String gestione = UtilityHashMap.getValueIfExists(entry.getKey(), "dtb_ordt.gestione");
String descrizioneEstesa = dtoList.get(0).getDescrizioneEstesa();
Integer numOrd = UtilityHashMap.getValueIfExists(entry.getKey(), "dtb_ordt.num_ord");
Date dataOrd = UtilityHashMap.getValueIfExists(entry.getKey(), "dtb_ordt.data_ord");
BigDecimal totalNumCnf = dtoList.stream()
.map(MvwSitArtUdcDetInventarioDTO::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add);
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" +
// " 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);
// }
StatoArtInventarioDTO statoArtInventario = statoArtsInventario.stream()
.filter(x ->
StringUtils.equalsIgnoreCase(x.getCodProd(), codMart) &&
Objects.equals(x.getDataOrd(), dataOrd) &&
Objects.equals(x.getNumOrd(), numOrd) &&
StringUtils.equalsIgnoreCase(x.getCodJfas(), posizione) &&
StringUtils.equalsIgnoreCase(x.getGestione(), gestione))
.findFirst()
.orElse(null);
return new ArtsInGiacenzaDTO()
.setCodMart(codMart)
@@ -200,7 +214,7 @@ public class WMSGiacenzaULService {
.setDataOrd(dataOrd)
.setNumCnf(totalNumCnf)
.setCount(dtoList.size())
// .setStatoArtInventario(statoArtInventarioDTO)
.setStatoArtInventario(statoArtInventario)
.setMvwSitArtUdcDetInventarioDTO(dtoList);
})
.collect(Collectors.toList());