Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-11-24 17:10:27 +01:00
2 changed files with 100 additions and 4 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

@@ -333,10 +333,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());
}
@@ -1477,7 +1477,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";
@@ -1542,7 +1542,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";