Merge branch 'master' into feature/RefactoringGestioneColli
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit

# Conflicts:
#	ems-engine/src/main/java/it/integry/ems/retail/wms/Utility/WMSUtility.java
This commit is contained in:
2025-11-24 17:18:27 +01:00
3 changed files with 103 additions and 18 deletions

View File

@@ -0,0 +1,96 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251124164630 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getMaterialiDistinta",
"CREATE FUNCTION [dbo].[getMaterialiDistinta](@codProd VARCHAR(15), @explodeSemilavorati BIT)\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN(WITH distinta AS (SELECT cod_prod,\n" +
" CONVERT(VARCHAR(15), NULL) AS cod_parent,\n" +
" cod_prod AS cod_mart,\n" +
" jtb_cicl.descrizione_prod AS descrizione,\n" +
" jtb_cicl.descrizione_estesa,\n" +
" CONVERT(VARCHAR(3), unt_mis_prod) AS unt_mis_prod,\n" +
" CONVERT(NUMERIC(20, 5), rap_conv_prod) AS rap_conv_prod,\n" +
" CONVERT(NUMERIC(20, 5), jtb_cicl.qta_prod) AS qta_prod,\n" +
" CONVERT(NUMERIC(20, 5), jtb_cicl.qta_prod) AS qta_dist,\n" +
" 1 AS livello,\n" +
" FORMAT(ROW_NUMBER() OVER ( ORDER BY cod_prod), '00000') AS item_id,\n" +
" CONVERT(VARCHAR(15), cod_prod) AS cod_prod_pri,\n" +
" CAST(0 AS BIT) AS ricorsione,\n" +
" CONVERT(NUMERIC(5, 2), 0) AS perc_sfrido,\n" +
" CONVERT(INT, NULL) AS num_fase,\n" +
" CONVERT(VARCHAR(1), NULL) AS flag_pri,\n" +
" CONVERT(VARCHAR(1024), NULL) AS note,\n" +
" CAST(1 AS BIT) AS is_root,\n" +
" CAST(0 AS BIT) AS is_foglia\n" +
" FROM jtb_cicl\n" +
" WHERE (@codProd IS NULL OR cod_prod = @codProd)\n" +
" UNION ALL\n" +
" SELECT distinta.cod_prod,\n" +
" CONVERT(VARCHAR(15), jtb_dist_mate.cod_prod) AS cod_parent,\n" +
" jtb_dist_mate.cod_mart,\n" +
" jtb_dist_mate.descrizione,\n" +
" jtb_dist_mate.descrizione_estesa,\n" +
" CONVERT(VARCHAR(3), jtb_dist_mate.unt_mis_dist) AS unt_mis_prod,\n" +
" CONVERT(NUMERIC(20, 5), jtb_dist_mate.rap_conv_dist) AS rap_conv_prod,\n" +
" CONVERT(NUMERIC(20, 5),\n" +
" ((jtb_dist_mate.qta_std * (1 + jtb_dist_mate.perc_sfrido / 100)) /\n" +
" (distinta.qta_prod)) * distinta.qta_prod) AS qta_prod,\n" +
" CONVERT(NUMERIC(20, 5), NULL),\n" +
" distinta.livello + 1,\n" +
" distinta.item_id + '_' +\n" +
" FORMAT(\n" +
" ROW_NUMBER() OVER ( ORDER BY jtb_dist_mate.flag_pri DESC, jtb_dist_mate.num_fase, id_riga ),\n" +
" '00000') AS item_id,\n" +
" CONVERT(VARCHAR(15), distinta.cod_mart) AS cod_prod_pri,\n" +
" CAST(CASE\n" +
" WHEN jtb_dist_mate.cod_mart = jtb_dist_mate.cod_prod THEN 1\n" +
" ELSE 0 END AS BIT) AS ricorsione,\n" +
" jtb_dist_mate.perc_sfrido,\n" +
" jtb_dist_mate.num_fase,\n" +
" CONVERT(VARCHAR(1), jtb_dist_mate.flag_pri) AS flag_pri,\n" +
" CONVERT(VARCHAR(1024), jtb_dist_mate.note) AS note,\n" +
" CAST(0 AS BIT) AS is_root,\n" +
" CAST(IIF(jtb_dist_mate.flag_pri = 's', 0, 1) AS BIT) AS is_foglia\n" +
" FROM jtb_dist_mate\n" +
" INNER JOIN distinta ON jtb_dist_mate.cod_prod = distinta.cod_mart\n" +
" INNER JOIN mtb_aart ON mtb_aart.cod_mart = jtb_dist_mate.cod_mart\n" +
" WHERE distinta.ricorsione = 0\n" +
" AND (distinta.is_root = 1 OR distinta.flag_pri = 'S' OR @explodeSemilavorati = 1))\n" +
" SELECT cod_prod,\n" +
" cod_parent,\n" +
" cod_mart,\n" +
" descrizione,\n" +
" descrizione_estesa,\n" +
" unt_mis_prod,\n" +
" rap_conv_prod,\n" +
" ISNULL(qta_dist, qta_prod) AS qta_prod,\n" +
" livello,\n" +
" item_id,\n" +
" cod_prod_pri,\n" +
" perc_sfrido,\n" +
" num_fase,\n" +
" DENSE_RANK() OVER ( PARTITION BY cod_prod ORDER BY cod_prod_pri ) - 1 + num_fase AS num_fase_calc,\n" +
" flag_pri,\n" +
" note,\n" +
" is_root,\n" +
" is_foglia\n" +
" FROM distinta)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -334,10 +334,10 @@ public class GeneraOrdLav {
.setFlagEvasoProd(flagEvasoProd != null ? flagEvasoProd.getValue().toString() : null)
.setGeneraOrdLavDaProd(dtbOrdt.isGeneraOrdLavDaProd());
if (row.getFlagSospesoOrdl() !=null) {
if (row.getFlagSospesoOrdl() != null) {
ordT.setFlagSospeso(row.getFlagSospesoOrdl());
}
if (row.getRifOrdOrdl() !=null) {
if (row.getRifOrdOrdl() != null) {
ordT.setRifOrd(row.getRifOrdOrdl());
}
@@ -1458,7 +1458,7 @@ public class GeneraOrdLav {
}
if (dataInizProdOld != null && dataInizNew != null && dataInizProdOld != EmsRestConstants.LOCAL_DATE_NULL && dataInizNew != EmsRestConstants.LOCAL_DATE_NULL){
if (dataInizProdOld != null && dataInizNew != null && dataInizProdOld != EmsRestConstants.LOCAL_DATE_NULL && dataInizNew != EmsRestConstants.LOCAL_DATE_NULL) {
Integer ggDiff = Math.toIntExact(UtilityLocalDate.daysAfterDate(dataInizProdOld, dataInizNew));
if (ggDiff != 0) {
sql = "SELECT * FROM dtb_ordr";
@@ -1523,7 +1523,7 @@ public class GeneraOrdLav {
BigDecimal qtaProdOld = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
BigDecimal qtaProdNew = qtaProd.multiply(rapConv);
BigDecimal moltiplicatore = qtaProdNew.divide(qtaProdOld, 5);
BigDecimal moltiplicatore = qtaProdNew.divide(qtaProdOld, 5, RoundingMode.HALF_UP);
if (!moltiplicatore.equals(BigDecimal.ONE)) {
sql = "SELECT * FROM dtb_ordr";

View File

@@ -2,10 +2,7 @@ package it.integry.ems.retail.wms.Utility;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import groovy.lang.Tuple2;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.dynamic_cache.EntityCacheComponent;
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.*;
import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
@@ -737,15 +734,7 @@ public class WMSUtility {
final EntityCacheComponent entityCacheComponent = ApplicationContextProvider.getApplicationContext().getBean(EntityCacheComponent.class);
List<MtbAart> listMtbAart = entityCacheComponent.getCachedEntitiesList(
connection.getIntegryCustomerDB(), MtbAart.ENTITY, x -> codMarts.contains(x.getCodMart()));
// String query =
// "SELECT DISTINCT mtb_aart.*"
// + " FROM mtb_aart "
// + " WHERE cod_mart IN (" + UtilityQuery.concatStringFieldsWithSeparator(codMarts, ",") + ")";
//
//
// List<MtbAart> listMtbAart = UtilityDB.executeSimpleQueryDTO(connection, query, MtbAart.class);
connection.getIntegryCustomerDB(), MtbAart.ENTITY, x -> codMarts.parallelStream().anyMatch(y -> y.equalsIgnoreCase(x.getCodMart())));
List<MtbAartBarCode> barCodeFromCod = getAlternativeMtbAartBarCodes(codMarts, connection);
@@ -819,7 +808,7 @@ public class WMSUtility {
List<MtbAartBarCode> barCodeList = entityCacheComponent.getCachedEntitiesList(
conn.getIntegryCustomerDB(),
MtbAartBarCode.ENTITY,
x -> finalCodMarts.contains(x.getCodMart()));
x -> finalCodMarts.stream().anyMatch(y -> y.equalsIgnoreCase(x.getCodMart())));
return barCodeList != null ? barCodeList : new ArrayList<>();
}