diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240423182547.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240423182547.java index 4e5c99a57c..2cb1f7f330 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240423182547.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240423182547.java @@ -11,572 +11,6 @@ public class Migration_20240423182547 extends BaseMigration implements Migration if (isHistoryDB()) return; - createOrUpdateFunction( - "MES_GetWorkOrders", - "CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" + - " @codAnag VARCHAR(5))\n" + - " RETURNS @val TABLE\n" + - " (\n" + - " [sort] [int] NULL,\n" + - " [cod_jcom] [varchar](10) NULL,\n" + - " [data_ord_prod] [datetime] NULL,\n" + - " [num_ord_prod] [int] NULL,\n" + - " [riga_ord_prod] [int] NULL,\n" + - " [flag_avviabile] [varchar](1) NULL,\n" + - " [flag_tracciabilita] [varchar](1) NULL,\n" + - " [unt_ord] [varchar](3) NULL,\n" + - " [rap_conv] [numeric](20, 10) NULL,\n" + - " [unt_ord2] [varchar](3) NULL,\n" + - " [rap_conv2] [numeric](20, 5) NULL,\n" + - " [unt_ord3] [varchar](3) NULL,\n" + - " [rap_conv3] [numeric](20, 5) NULL,\n" + - " [descrizione_prod] [varchar](255) NULL,\n" + - " [num_pezzi] [numeric](38, 6) NULL,\n" + - " [num_cnf] [numeric](20, 5) NULL,\n" + - " [gg_scad_partita] [int] NULL,\n" + - " [qta_cnf] [numeric](15, 5) NULL,\n" + - " [colli_pedana] [numeric](20, 5) NULL,\n" + - " [num_pedane] [numeric](38, 18) NULL,\n" + - " [pos_riga] [int] NULL,\n" + - " [flag_evaso_prod] [varchar](1) NULL,\n" + - " [flag_evaso_forzato] [varchar](1) NOT NULL,\n" + - " [flag_ordine_evaso] [varchar](1) NULL,\n" + - " [gestione] [varchar](1) NOT NULL,\n" + - " [data_ord] [datetime] NOT NULL,\n" + - " [cod_tcol_UL] [varchar](5) NULL,\n" + - " [descrizione_tcol] [varchar](40) NULL,\n" + - " [cod_anag] [varchar](5) NOT NULL,\n" + - " [rag_soc_anag] [varchar](40) NULL,\n" + - " [rif_ord] [varchar](40) NULL,\n" + - " [cod_vdes] [varchar](5) NULL,\n" + - " [cod_mdep] [varchar](5) NOT NULL,\n" + - " [num_ord] [int] NOT NULL,\n" + - " [cod_jfas] [varchar](5) NOT NULL,\n" + - " [cod_jfas_lav] [varchar](5) NOT NULL,\n" + - " [partita_mag] [varchar](20) NULL,\n" + - " [note_lav] [varchar](255) NULL,\n" + - " [data_scad] [datetime] NULL,\n" + - " [cod_prod] [varchar](15) NULL,\n" + - " [descrizione_commessa] [varchar](40) NULL,\n" + - " [data_iniz_prod] [datetime] NULL,\n" + - " [max_step] [int] NULL,\n" + - " [unt_mis_prod] [varchar](5) NULL,\n" + - " [qta_batch_prod] [numeric](15, 5) NULL,\n" + - " [rap_conv_prod] [numeric](20, 10) NULL,\n" + - " [data_iniz] [datetime] NULL,\n" + - " [data_fine] [datetime] NULL,\n" + - " [qta_prod] [decimal](20, 5) NULL,\n" + - " [qta_lav] [decimal](20, 5) NULL,\n" + - " [max_fase] [int] NULL,\n" + - " [num_fase] [int] NULL,\n" + - " [hr_num] [int] NOT NULL,\n" + - " [descrizione_attivita] [varchar](1024) NULL,\n" + - " [prod_std] [numeric](38, 21) NULL,\n" + - " [elapsed_time] [int] NULL,\n" + - " [qta_trasferite] [numeric](38, 5) NULL,\n" + - " [udc_trasferiti] [int] NULL,\n" + - " [stato] [varchar](11) NOT NULL,\n" + - " [pz_trasferiti] [int] NULL,\n" + - " [run_time_sec] [numeric](38, 6) NULL,\n" + - " [cumulative_run_time_sec] [numeric](38, 6) NULL,\n" + - " [run_time_hour] [int] NULL,\n" + - " [run_time_min] [numeric](38, 6) NULL,\n" + - " [run_time_end] [datetime] NULL,\n" + - " [id_lotto] [int] NULL,\n" + - " [data_lotto] [datetime] NULL\n" + - " ) AS\n" + - "BEGIN\n" + - "\n" + - " -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" + - "-- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" + - "-- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" + - "-- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" + - "-- DECLARE @codAnag VARCHAR(5) = null;\n" + - "\n" + - " SET @dateStart = ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE()));\n" + - " SET @dateEND = ISNULL(@dateEnd, GETDATE());\n" + - " SET @flagEvaso = ISNULL(@flagEvaso, 'I');\n" + - "\n" + - "--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" + - " WITH setup AS (SELECT @dateStart AS date_start,\n" + - " @dateEnd AS date_end,\n" + - " @flagEvaso AS flag_evaso,\n" + - " @codJfas AS cod_jfas,\n" + - " @codAnag AS cod_anag),\n" + - " setup_jfas AS (SELECT value_string AS cod_jfas\n" + - " FROM dbo.ParseStringIntoArray(@codJfas, '|')),\n" + - " setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" + - " FROM stb_gest_setup_depo\n" + - " WHERE gest_name = 'CARICO_SCARICO_PF'\n" + - " AND section = 'SETUP'\n" + - " AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" + - " mtb_colr_sum AS (SELECT mtb_colr.gestione,\n" + - " mtb_colr.data_collo,\n" + - " mtb_colr.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" + - " WHERE mtb_colr.gestione_rif IS NULL\n" + - " AND mtb_colr.data_collo_rif IS NULL\n" + - " AND mtb_colr.ser_collo_rif IS NULL\n" + - " AND mtb_colr.num_collo_rif IS NULL\n" + - " AND 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_colr.gestione,\n" + - " mtb_colr.data_collo,\n" + - " mtb_colr.num_collo,\n" + - " mtb_colr.cod_mart,\n" + - " mtb_colr.data_ord,\n" + - " mtb_colr.num_ord),\n" + - " in_production_machines AS (SELECT DISTINCT dtb_ord_macc.gestione,\n" + - " dtb_ord_macc.data_ord,\n" + - " dtb_ord_macc.num_ord,\n" + - " MAX(dtb_ord_macc.data_mov) AS max_data_mov\n" + - " FROM dtb_ord_macc\n" + - " INNER JOIN (SELECT gestione, data_ord, num_ord, cod_cmac, MAX(data_mov) AS data_mov\n" + - " FROM dtb_ord_macc\n" + - " GROUP BY gestione, data_ord, num_ord, cod_cmac) last_event\n" + - " ON dtb_ord_macc.data_ord = last_event.data_ord AND\n" + - " dtb_ord_macc.num_ord = last_event.num_ord AND\n" + - " dtb_ord_macc.gestione = last_event.gestione AND\n" + - " dtb_ord_macc.cod_cmac = last_event.cod_cmac AND\n" + - " dtb_ord_macc.data_mov = last_event.data_mov\n" + - " INNER JOIN (SELECT evento, IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" + - " FROM dtb_ord_macc_eventi) dtb_ord_macc_eventi\n" + - " ON dtb_ord_macc.evento = dtb_ord_macc_eventi.evento\n" + - " WHERE value = 1\n" + - " GROUP BY dtb_ord_macc.num_ord, dtb_ord_macc.data_ord, dtb_ord_macc.gestione),\n" + - " dtb_ord_max_step AS (SELECT gestione,\n" + - " data_ord,\n" + - " num_ord,\n" + - " MAX(id_step) AS max_step,\n" + - " num_fase,\n" + - " MAX(num_fase) OVER (PARTITION BY gestione,\n" + - " data_ord,\n" + - " num_ord) AS max_fase,\n" + - " dtb_ord_steps.cod_jfas,\n" + - " SUM(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE()))) AS elapsed_time\n" + - " FROM dtb_ord_steps\n" + - " CROSS APPLY setup\n" + - " WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" + - " GROUP BY gestione,\n" + - " data_ord,\n" + - " num_ord,\n" + - " num_fase,\n" + - " dtb_ord_steps.cod_jfas),\n" + - " dtb_ordr_prod_with_art AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" + - " dtb_ordr.num_ord AS num_ord_prod,\n" + - " dtb_ordr.riga_ord AS riga_ord_prod,\n" + - " dtb_ordr.gestione AS gestione_ord_prod,\n" + - " IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()), 'S',\n" + - " 'N') AS flag_avviabile,\n" + - " mtb_aart_prod.flag_tracciabilita,\n" + - " dtb_ordr.unt_ord,\n" + - " dtb_ordr.rap_conv,\n" + - " dtb_ordr.unt_ord2,\n" + - " CAST(ROUND(dtb_ordr.qta_ord2 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" + - " 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" + - " dtb_ordr.unt_ord3,\n" + - " CAST(ROUND(dtb_ordr.qta_ord3 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" + - " 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" + - " dtb_ordr.qta_ord,\n" + - " dtb_ordr.qta_ord2,\n" + - " dtb_ordr.qta_ord3,\n" + - " dtb_ordr.num_cnf,\n" + - " IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" + - " IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf /\n" + - " ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" + - " mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" + - "\n" + - " IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" + - " IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" + - " dtb_ordr.colli_pedana)\n" + - " AS colli_pedana,\n" + - " dtb_ordr.pos_riga,\n" + - "\n" + - " IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" + - " IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" + - " NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" + - " mtb_aart_prod.rap_conv2,\n" + - " 1)) AS calc_rap_conv,\n" + - " mtb_aart_prod.gg_scad_partita,\n" + - " mtb_aart_prod.qta_cnf\n" + - " FROM dtb_ordr\n" + - " INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart),\n" + - " ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" + - " dtb_ordr_prod_with_art.data_ord_prod,\n" + - " dtb_ordr_prod_with_art.num_ord_prod,\n" + - " dtb_ordr_prod_with_art.riga_ord_prod,\n" + - " dtb_ordr_prod_with_art.flag_avviabile,\n" + - " dtb_ordr_prod_with_art.flag_tracciabilita,\n" + - " dtb_ordr_prod_with_art.unt_ord,\n" + - " CASE\n" + - " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + - " dtb_ordr_prod_with_art.rap_conv\n" + - " ELSE CASE\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis THEN\n" + - " dtb_ordr_prod_with_art.rap_conv\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis2 THEN\n" + - " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + - " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis3 THEN\n" + - " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + - " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + - " END\n" + - " END\n" + - " AS rap_conv,\n" + - " dtb_ordr_prod_with_art.unt_ord2,\n" + - " CASE\n" + - " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + - " dtb_ordr_prod_with_art.rap_conv2\n" + - " ELSE CASE\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis THEN\n" + - " dtb_ordr_prod_with_art.rap_conv2\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis2 THEN\n" + - " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + - " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis3 THEN\n" + - " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + - " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + - " END\n" + - " END\n" + - " AS rap_conv2,\n" + - " dtb_ordr_prod_with_art.unt_ord3,\n" + - " CASE\n" + - " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + - " dtb_ordr_prod_with_art.rap_conv3\n" + - " ELSE CASE\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis THEN\n" + - " dtb_ordr_prod_with_art.rap_conv3\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis2 THEN\n" + - " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + - " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + - " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis3 THEN\n" + - " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + - " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + - " END\n" + - " END\n" + - " AS rap_conv3,\n" + - " ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" + - " dtb_ordr_prod_with_art.num_cnf * dtb_ordr_prod_with_art.cal_qta_cnf AS num_pezzi,\n" + - " dtb_ordr_prod_with_art.num_cnf,\n" + - " dtb_ordr_prod_with_art.gg_scad_partita,\n" + - " dtb_ordr_prod_with_art.qta_cnf,\n" + - " dtb_ordr_prod_with_art.colli_pedana,\n" + - " dtb_ordr_prod_with_art.num_cnf / dtb_ordr_prod_with_art.colli_pedana AS num_pedane,\n" + - " dtb_ordr_prod_with_art.pos_riga,\n" + - " dtb_ordt.flag_evaso_prod,\n" + - " dtb_ordt.flag_evaso_forzato,\n" + - " CASE\n" + - " WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" + - " (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" + - " flag_evaso_prod = 'E'))\n" + - " AND dtb_ordt.flag_evaso_forzato = 'N'\n" + - " THEN 'I'\n" + - " WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" + - " THEN flag_evaso_prod\n" + - " END AS flag_ordine_evaso,\n" + - " dtb_ordt.gestione,\n" + - " dtb_ordt.data_ord,\n" + - " dtb_ordt.cod_tcol_UL,\n" + - " mtb_tcol.descrizione AS descrizione_tcol,\n" + - " dtb_ordt.cod_anag,\n" + - " gtb_anag.rag_soc AS rag_soc_anag,\n" + - " dtb_ordt.rif_ord,\n" + - " dtb_ordt.cod_vdes,\n" + - " dtb_ordt.cod_mdep,\n" + - " dtb_ordt.num_ord,\n" + - " dtb_ord_steps.cod_jfas,\n" + - " dtb_ordt.cod_jfas AS cod_jfas_lav,\n" + - " mtb_partita_mag.partita_mag,\n" + - " dtb_ordt.note AS note_lav,\n" + - " mtb_partita_mag.data_scad,\n" + - " dtb_ordt.cod_prod,\n" + - " jtb_comt.descrizione AS descrizione_commessa,\n" + - " dtb_ordt.data_iniz_prod,\n" + - " q.max_step,\n" + - " q.max_fase,\n" + - " q.num_fase,\n" + - " IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, 'Colli',\n" + - " jtb_cicl.unt_mis_prod)\n" + - " AS unt_mis_prod,\n" + - " IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1,\n" + - " dtb_ordr_prod_with_art.colli_pedana, jtb_cicl.qta_prod)\n" + - " AS qta_batch_prod,\n" + - " IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, mtb_aart.qta_cnf,\n" + - " jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" + - "\n" + - " dtb_ord_steps.data_iniz,\n" + - " dtb_ord_steps.data_fine,\n" + - " dtb_ord_steps.qta_lav AS qta_lav,\n" + - " IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" + - " dtb_ordt.qta_prod) AS qta_prod,\n" + - " dtb_ord_steps.hr_num,\n" + - " dtb_ord_steps.descrizione_attivita,\n" + - " 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" + - " ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" + - " q.elapsed_time,\n" + - " SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite,\n" + - " COUNT(mtb_colr.num_collo) AS udc_trasferiti,\n" + - " CASE\n" + - " WHEN (in_production_machines.max_data_mov IS NOT NULL AND (q.max_step = 0 OR\n" + - " (q.max_step > 0 AND\n" + - " dtb_ord_steps.data_fine IS NOT NULL AND\n" + - " DATEDIFF(MINUTE,\n" + - " dtb_ord_steps.data_fine,\n" + - " in_production_machines.max_data_mov) >\n" + - " 5)))\n" + - " THEN 'IN AVVIO'\n" + - " WHEN q.max_step = 0\n" + - " THEN 'PROGRAMMATO'\n" + - " WHEN data_fine IS NULL\n" + - " THEN 'IN CORSO'\n" + - " ELSE 'IN PAUSA'\n" + - " END\n" + - " AS stato,\n" + - " CONVERT(INT, SUM(ISNULL(mtb_colr.qta_col / dtb_ordr_prod_with_art.calc_rap_conv, 0))) AS pz_trasferiti,\n" + - " CASE\n" + - " WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" + - " (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" + - " SUM(ISNULL(mtb_colr.qta_col, 0))) > 0\n" + - " THEN\n" + - " (jtb_dist_clav_dir.duration /\n" + - " ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" + - " (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" + - " SUM(ISNULL(mtb_colr.qta_col, 0)))\n" + - " ELSE 0 END AS run_time_sec,\n" + - " jl.id_lotto,\n" + - " jlt.data_lotto\n" + - "\n" + - " FROM dtb_ord_steps\n" + - " INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" + - " AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" + - " AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" + - " LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" + - " ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" + - " LEFT OUTER JOIN jtb_dist_clav_dir\n" + - " ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" + - " dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" + - " LEFT OUTER JOIN mtb_partita_mag\n" + - " ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" + - " dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" + - " mtb_partita_mag.flag_stato = 'A'\n" + - " LEFT OUTER JOIN mtb_colr_sum mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord AND\n" + - " dtb_ordt.gestione = mtb_colr.gestione AND\n" + - " dtb_ordt.num_ord = mtb_colr.num_ord AND\n" + - " dtb_ordt.cod_prod = mtb_colr.cod_mart\n" + - " LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" + - " INNER JOIN dtb_ord_max_step q ON dtb_ord_steps.gestione = q.gestione AND\n" + - " dtb_ord_steps.data_ord = q.data_ord AND\n" + - " dtb_ord_steps.num_ord = q.num_ord AND\n" + - " dtb_ord_steps.id_step = q.max_step AND\n" + - " dtb_ord_steps.cod_jfas = q.cod_jfas\n" + - " LEFT OUTER JOIN dtb_ordr_prod_with_art\n" + - " ON dtb_ordr_prod_with_art.gestione_ord_prod =\n" + - " dtb_ordt.gestione_rif AND\n" + - " dtb_ordr_prod_with_art.data_ord_prod = dtb_ordt.data_ord_rif AND\n" + - " dtb_ordr_prod_with_art.num_ord_prod = dtb_ordt.num_ord_rif AND\n" + - " dtb_ordr_prod_with_art.riga_ord_prod = dtb_ordt.riga_ord_rif\n" + - " LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" + - " LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" + - " LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" + - " LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" + - " LEFT OUTER JOIN in_production_machines\n" + - " ON dtb_ord_steps.data_ord = in_production_machines.data_ord\n" + - " AND dtb_ord_steps.num_ord = in_production_machines.num_ord\n" + - " AND dtb_ord_steps.gestione = in_production_machines.gestione\n" + - " LEFT OUTER JOIN jtb_lotr jl\n" + - " ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" + - " dtb_ordt.gestione = jl.gestione AND\n" + - " dtb_ordt.data_ord = jl.data_ord AND\n" + - " dtb_ordt.num_ord = jl.num_ord\n" + - " LEFT OUTER JOIN jtb_lott jlt\n" + - " ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" + - "\n" + - " CROSS APPLY setup\n" + - " WHERE dtb_ordt.flag_annulla = 'N'\n" + - " AND (setup.flag_evaso IS NULL\n" + - " OR (\n" + - " (setup.flag_evaso = 'I'\n" + - " AND\n" + - " dtb_ord_steps.flag_step_attivo = 'S'\n" + - " AND (flag_evaso_prod = 'I'\n" + - " OR\n" + - " (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" + - " AND\n" + - " flag_evaso_prod = 'E'))\n" + - " AND dtb_ordt.flag_evaso_forzato = 'N'\n" + - " )\n" + - " OR (setup.flag_evaso = 'E '\n" + - " AND flag_evaso_prod = 'E')\n" + - " )\n" + - " )\n" + - " AND (setup.cod_jfas IS NULL\n" + - " OR dtb_ord_steps.cod_jfas IN (SELECT cod_jfas FROM setup_jfas))\n" + - " AND (setup.cod_anag IS NULL\n" + - " OR dtb_ordt.cod_anag = setup.cod_anag)\n" + - " GROUP BY dtb_ordr_prod_with_art.data_ord_prod,\n" + - " dtb_ordr_prod_with_art.num_ord_prod,\n" + - " dtb_ordr_prod_with_art.riga_ord_prod,\n" + - " dtb_ordr_prod_with_art.flag_avviabile,\n" + - " dtb_ordr_prod_with_art.flag_tracciabilita,\n" + - " dtb_ordr_prod_with_art.unt_ord,\n" + - " mtb_partita_mag.rap_conv2,\n" + - " mtb_partita_mag.rap_conv3,\n" + - " dtb_ordt.note,\n" + - " dtb_ordr_prod_with_art.rap_conv,\n" + - " dtb_ordt.descrizione_prod,\n" + - " dtb_ordt.descr_estesa_prod,\n" + - " dtb_ordr_prod_with_art.num_cnf,\n" + - " mtb_aart.qta_cnf,\n" + - " mtb_aart.gg_scad_partita,\n" + - " dtb_ordr_prod_with_art.pos_riga,\n" + - " dtb_ordt.flag_evaso_prod,\n" + - " dtb_ordt.flag_evaso_forzato,\n" + - " dtb_ordt.gestione,\n" + - " dtb_ordt.data_ord,\n" + - " dtb_ordt.num_ord,\n" + - " dtb_ord_steps.cod_jfas,\n" + - " dtb_ordt.cod_jfas,\n" + - " dtb_ordt.cod_jcom,\n" + - " mtb_partita_mag.partita_mag,\n" + - " mtb_partita_mag.data_scad,\n" + - " dtb_ordt.cod_prod,\n" + - " dtb_ordt.data_iniz_prod,\n" + - " q.max_step,\n" + - " dtb_ord_steps.data_iniz,\n" + - " dtb_ord_steps.data_fine,\n" + - " dtb_ordt.cod_tcol_UL,\n" + - " dtb_ordt.cod_anag,\n" + - " gtb_anag.rag_soc,\n" + - " dtb_ordt.rif_ord,\n" + - " dtb_ordt.cod_vdes,\n" + - " dtb_ordt.cod_mdep,\n" + - " mtb_aart.colli_pedana,\n" + - " dtb_ord_steps.qta_prod,\n" + - " dtb_ordt.qta_prod,\n" + - " jtb_dist_clav_dir.duration,\n" + - " jtb_comt.descrizione,\n" + - " q.elapsed_time,\n" + - " dtb_ordr_prod_with_art.colli_pedana,\n" + - " dtb_ord_steps.hr_num,\n" + - " mtb_aart.unt_mis,\n" + - " mtb_aart.unt_mis2,\n" + - " mtb_aart.rap_conv2,\n" + - " mtb_aart.unt_mis3,\n" + - " mtb_aart.rap_conv3,\n" + - " dtb_ordr_prod_with_art.unt_ord2,\n" + - " dtb_ordr_prod_with_art.unt_ord3,\n" + - " dtb_ordr_prod_with_art.qta_ord,\n" + - " dtb_ordr_prod_with_art.qta_ord2,\n" + - " dtb_ordr_prod_with_art.qta_ord3,\n" + - " dtb_ordr_prod_with_art.rap_conv2,\n" + - " dtb_ordr_prod_with_art.rap_conv3,\n" + - " dtb_ordr_prod_with_art.qta_cnf,\n" + - " dtb_ordr_prod_with_art.cal_qta_cnf,\n" + - " dtb_ordr_prod_with_art.gg_scad_partita,\n" + - " jtb_cicl.qta_prod,\n" + - " jtb_cicl.rap_conv_prod,\n" + - " dtb_ord_steps.descrizione_attivita,\n" + - " jtb_cicl.unt_mis_prod,\n" + - " mtb_tcol.descrizione,\n" + - " dtb_ordt.qta_prod,\n" + - " dtb_ordt.rap_conv_prod,\n" + - " setupCaricoImmediato.flag_carico_scarico_immediato,\n" + - " in_production_machines.max_data_mov, q.num_fase, dtb_ord_steps.qta_lav, q.max_fase,\n" + - " jl.id_lotto,\n" + - " jlt.data_lotto)\n" + - " INSERT\n" + - " INTO @val\n" + - " SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" + - " cod_jcom,\n" + - " data_ord_prod,\n" + - " num_ord_prod,\n" + - " riga_ord_prod,\n" + - " flag_avviabile,\n" + - " flag_tracciabilita,\n" + - " unt_ord,\n" + - " rap_conv,\n" + - " unt_ord2,\n" + - " rap_conv2,\n" + - " unt_ord3,\n" + - " rap_conv3,\n" + - " descrizione_prod,\n" + - " num_pezzi,\n" + - " num_cnf,\n" + - " gg_scad_partita,\n" + - " qta_cnf,\n" + - " colli_pedana,\n" + - " num_pedane,\n" + - " pos_riga,\n" + - " flag_evaso_prod,\n" + - " flag_evaso_forzato,\n" + - " flag_ordine_evaso,\n" + - " gestione,\n" + - " data_ord,\n" + - " cod_tcol_UL,\n" + - " descrizione_tcol,\n" + - " cod_anag,\n" + - " rag_soc_anag,\n" + - " rif_ord,\n" + - " cod_vdes,\n" + - " cod_mdep,\n" + - " num_ord,\n" + - " cod_jfas,\n" + - " cod_jfas_lav,\n" + - " partita_mag,\n" + - " note_lav,\n" + - " data_scad,\n" + - " cod_prod,\n" + - " descrizione_commessa,\n" + - " data_iniz_prod,\n" + - " max_step,\n" + - " unt_mis_prod,\n" + - " qta_batch_prod,\n" + - " rap_conv_prod,\n" + - " data_iniz,\n" + - " data_fine,\n" + - " qta_prod,\n" + - " qta_lav,\n" + - " max_fase,\n" + - " num_fase,\n" + - " hr_num,\n" + - " descrizione_attivita,\n" + - " prod_std,\n" + - " elapsed_time,\n" + - " qta_trasferite,\n" + - " udc_trasferiti,\n" + - " stato,\n" + - " pz_trasferiti,\n" + - " run_time_sec,\n" + - " SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" + - " CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" + - " ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" + - " DATEADD(SECOND, SUM(run_time_sec)\n" + - " OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" + - " CASE\n" + - " WHEN data_ord_prod > GETDATE() THEN DATEADD(HH, 7, data_ord_prod)\n" + - " ELSE GETDATE() END) AS run_time_end,\n" + - " id_lotto,\n" + - " data_lotto\n" + - "\n" + - " FROM ord_lav\n" + - " ORDER BY ord_lav.data_ord,\n" + - " ord_lav.num_ord_prod,\n" + - " ord_lav.pos_riga,\n" + - " ord_lav.num_ord\n" + - " RETURN\n" + - "END" - ); - executeStatement( "ALTER TABLE mtb_unt_mis\n" + " ADD grandezza TINYINT" diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240507152842.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240507152842.java new file mode 100644 index 0000000000..e27577fd80 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240507152842.java @@ -0,0 +1,587 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240507152842 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + createOrUpdateFunction( + "MES_GetWorkOrders", + "CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" + + " @codAnag VARCHAR(5))\n" + + " RETURNS @val TABLE\n" + + " (\n" + + " [sort] [int] NULL,\n" + + " [cod_jcom] [varchar](10) NULL,\n" + + " [data_ord_prod] [datetime] NULL,\n" + + " [num_ord_prod] [int] NULL,\n" + + " [riga_ord_prod] [int] NULL,\n" + + " [flag_avviabile] [varchar](1) NULL,\n" + + " [flag_tracciabilita] [varchar](1) NULL,\n" + + " [unt_ord] [varchar](3) NULL,\n" + + " [rap_conv] [numeric](20, 10) NULL,\n" + + " [unt_ord2] [varchar](3) NULL,\n" + + " [rap_conv2] [numeric](20, 5) NULL,\n" + + " [unt_ord3] [varchar](3) NULL,\n" + + " [rap_conv3] [numeric](20, 5) NULL,\n" + + " [descrizione_prod] [varchar](255) NULL,\n" + + " [num_pezzi] [numeric](38, 6) NULL,\n" + + " [num_cnf] [numeric](20, 5) NULL,\n" + + " [gg_scad_partita] [int] NULL,\n" + + " [qta_cnf] [numeric](15, 5) NULL,\n" + + " [colli_pedana] [numeric](20, 5) NULL,\n" + + " [num_pedane] [numeric](38, 18) NULL,\n" + + " [pos_riga] [int] NULL,\n" + + " [flag_evaso_prod] [varchar](1) NULL,\n" + + " [flag_evaso_forzato] [varchar](1) NOT NULL,\n" + + " [flag_ordine_evaso] [varchar](1) NULL,\n" + + " [gestione] [varchar](1) NOT NULL,\n" + + " [data_ord] [datetime] NOT NULL,\n" + + " [cod_tcol_UL] [varchar](5) NULL,\n" + + " [descrizione_tcol] [varchar](40) NULL,\n" + + " [cod_anag] [varchar](5) NOT NULL,\n" + + " [rag_soc_anag] [varchar](40) NULL,\n" + + " [rif_ord] [varchar](40) NULL,\n" + + " [cod_vdes] [varchar](5) NULL,\n" + + " [cod_mdep] [varchar](5) NOT NULL,\n" + + " [num_ord] [int] NOT NULL,\n" + + " [cod_jfas] [varchar](5) NOT NULL,\n" + + " [cod_jfas_lav] [varchar](5) NOT NULL,\n" + + " [partita_mag] [varchar](20) NULL,\n" + + " [note_lav] [varchar](255) NULL,\n" + + " [data_scad] [datetime] NULL,\n" + + " [cod_prod] [varchar](15) NULL,\n" + + " [descrizione_commessa] [varchar](40) NULL,\n" + + " [data_iniz_prod] [datetime] NULL,\n" + + " [max_step] [int] NULL,\n" + + " [unt_mis_prod] [varchar](5) NULL,\n" + + " [qta_batch_prod] [numeric](15, 5) NULL,\n" + + " [rap_conv_prod] [numeric](20, 10) NULL,\n" + + " [data_iniz] [datetime] NULL,\n" + + " [data_fine] [datetime] NULL,\n" + + " [qta_prod] [decimal](20, 5) NULL,\n" + + " [qta_lav] [decimal](20, 5) NULL,\n" + + " [max_fase] [int] NULL,\n" + + " [num_fase] [int] NULL,\n" + + " [hr_num] [int] NOT NULL,\n" + + " [descrizione_attivita] [varchar](1024) NULL,\n" + + " [prod_std] [numeric](38, 21) NULL,\n" + + " [elapsed_time] [int] NULL,\n" + + " [qta_trasferite] [numeric](38, 5) NULL,\n" + + " [udc_trasferiti] [int] NULL,\n" + + " [stato] [varchar](11) NOT NULL,\n" + + " [pz_trasferiti] [int] NULL,\n" + + " [run_time_sec] [numeric](38, 6) NULL,\n" + + " [cumulative_run_time_sec] [numeric](38, 6) NULL,\n" + + " [run_time_hour] [int] NULL,\n" + + " [run_time_min] [numeric](38, 6) NULL,\n" + + " [run_time_end] [datetime] NULL,\n" + + " [id_lotto] [int] NULL,\n" + + " [data_lotto] [datetime] NULL\n" + + " ) AS\n" + + "BEGIN\n" + + "\n" + + " -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" + + "-- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" + + "-- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" + + "-- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" + + "-- DECLARE @codAnag VARCHAR(5) = null;\n" + + "\n" + + " SET @dateStart = ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE()));\n" + + " SET @dateEND = ISNULL(@dateEnd, GETDATE());\n" + + " SET @flagEvaso = ISNULL(@flagEvaso, 'I');\n" + + "\n" + + "--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" + + " WITH setup AS (SELECT @dateStart AS date_start,\n" + + " @dateEnd AS date_end,\n" + + " @flagEvaso AS flag_evaso,\n" + + " @codJfas AS cod_jfas,\n" + + " @codAnag AS cod_anag),\n" + + " setup_jfas AS (SELECT value_string AS cod_jfas\n" + + " FROM dbo.ParseStringIntoArray(@codJfas, '|')),\n" + + " setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" + + " FROM stb_gest_setup_depo\n" + + " WHERE gest_name = 'CARICO_SCARICO_PF'\n" + + " AND section = 'SETUP'\n" + + " AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" + + " mtb_colr_sum AS (SELECT mtb_colr.gestione,\n" + + " mtb_colr.data_collo,\n" + + " mtb_colr.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" + + " WHERE mtb_colr.gestione_rif IS NULL\n" + + " AND mtb_colr.data_collo_rif IS NULL\n" + + " AND mtb_colr.ser_collo_rif IS NULL\n" + + " AND mtb_colr.num_collo_rif IS NULL\n" + + " AND 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_colr.gestione,\n" + + " mtb_colr.data_collo,\n" + + " mtb_colr.num_collo,\n" + + " mtb_colr.cod_mart,\n" + + " mtb_colr.data_ord,\n" + + " mtb_colr.num_ord),\n" + + " in_production_machines AS (SELECT DISTINCT dtb_ord_macc.gestione,\n" + + " dtb_ord_macc.data_ord,\n" + + " dtb_ord_macc.num_ord,\n" + + " MAX(dtb_ord_macc.data_mov) AS max_data_mov\n" + + " FROM dtb_ord_macc\n" + + " INNER JOIN (SELECT gestione, data_ord, num_ord, cod_cmac, MAX(data_mov) AS data_mov\n" + + " FROM dtb_ord_macc\n" + + " GROUP BY gestione, data_ord, num_ord, cod_cmac) last_event\n" + + " ON dtb_ord_macc.data_ord = last_event.data_ord AND\n" + + " dtb_ord_macc.num_ord = last_event.num_ord AND\n" + + " dtb_ord_macc.gestione = last_event.gestione AND\n" + + " dtb_ord_macc.cod_cmac = last_event.cod_cmac AND\n" + + " dtb_ord_macc.data_mov = last_event.data_mov\n" + + " INNER JOIN (SELECT evento, IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" + + " FROM dtb_ord_macc_eventi) dtb_ord_macc_eventi\n" + + " ON dtb_ord_macc.evento = dtb_ord_macc_eventi.evento\n" + + " WHERE value = 1\n" + + " GROUP BY dtb_ord_macc.num_ord, dtb_ord_macc.data_ord, dtb_ord_macc.gestione),\n" + + " dtb_ord_max_step AS (SELECT gestione,\n" + + " data_ord,\n" + + " num_ord,\n" + + " MAX(id_step) AS max_step,\n" + + " num_fase,\n" + + " MAX(num_fase) OVER (PARTITION BY gestione,\n" + + " data_ord,\n" + + " num_ord) AS max_fase,\n" + + " dtb_ord_steps.cod_jfas,\n" + + " SUM(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE()))) AS elapsed_time\n" + + " FROM dtb_ord_steps\n" + + " CROSS APPLY setup\n" + + " WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" + + " GROUP BY gestione,\n" + + " data_ord,\n" + + " num_ord,\n" + + " num_fase,\n" + + " dtb_ord_steps.cod_jfas),\n" + + " dtb_ordr_prod_with_art AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" + + " dtb_ordr.num_ord AS num_ord_prod,\n" + + " dtb_ordr.riga_ord AS riga_ord_prod,\n" + + " dtb_ordr.gestione AS gestione_ord_prod,\n" + + " IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()), 'S',\n" + + " 'N') AS flag_avviabile,\n" + + " mtb_aart_prod.flag_tracciabilita,\n" + + " dtb_ordr.unt_ord,\n" + + " dtb_ordr.rap_conv,\n" + + " dtb_ordr.unt_ord2,\n" + + " CAST(ROUND(dtb_ordr.qta_ord2 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" + + " 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" + + " dtb_ordr.unt_ord3,\n" + + " CAST(ROUND(dtb_ordr.qta_ord3 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" + + " 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" + + " dtb_ordr.qta_ord,\n" + + " dtb_ordr.qta_ord2,\n" + + " dtb_ordr.qta_ord3,\n" + + " dtb_ordr.num_cnf,\n" + + " IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" + + " IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf /\n" + + " ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" + + " mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" + + "\n" + + " IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" + + " IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" + + " dtb_ordr.colli_pedana)\n" + + " AS colli_pedana,\n" + + " dtb_ordr.pos_riga,\n" + + "\n" + + " IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" + + " IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" + + " NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" + + " mtb_aart_prod.rap_conv2,\n" + + " 1)) AS calc_rap_conv,\n" + + " mtb_aart_prod.gg_scad_partita,\n" + + " mtb_aart_prod.qta_cnf\n" + + " FROM dtb_ordr\n" + + " INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart),\n" + + " ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" + + " dtb_ordr_prod_with_art.data_ord_prod,\n" + + " dtb_ordr_prod_with_art.num_ord_prod,\n" + + " dtb_ordr_prod_with_art.riga_ord_prod,\n" + + " dtb_ordr_prod_with_art.flag_avviabile,\n" + + " dtb_ordr_prod_with_art.flag_tracciabilita,\n" + + " dtb_ordr_prod_with_art.unt_ord,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + + " dtb_ordr_prod_with_art.rap_conv\n" + + " ELSE CASE\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis THEN\n" + + " dtb_ordr_prod_with_art.rap_conv\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis2 THEN\n" + + " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis3 THEN\n" + + " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + + " END\n" + + " END\n" + + " AS rap_conv,\n" + + " dtb_ordr_prod_with_art.unt_ord2,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + + " dtb_ordr_prod_with_art.rap_conv2\n" + + " ELSE CASE\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis THEN\n" + + " dtb_ordr_prod_with_art.rap_conv2\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis2 THEN\n" + + " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis3 THEN\n" + + " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + + " END\n" + + " END\n" + + " AS rap_conv2,\n" + + " dtb_ordr_prod_with_art.unt_ord3,\n" + + " CASE\n" + + " WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" + + " dtb_ordr_prod_with_art.rap_conv3\n" + + " ELSE CASE\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis THEN\n" + + " dtb_ordr_prod_with_art.rap_conv3\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis2 THEN\n" + + " IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" + + " WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis3 THEN\n" + + " IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" + + " dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" + + " END\n" + + " END\n" + + " AS rap_conv3,\n" + + " ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" + + " dtb_ordr_prod_with_art.num_cnf * dtb_ordr_prod_with_art.cal_qta_cnf AS num_pezzi,\n" + + " dtb_ordr_prod_with_art.num_cnf,\n" + + " dtb_ordr_prod_with_art.gg_scad_partita,\n" + + " dtb_ordr_prod_with_art.qta_cnf,\n" + + " dtb_ordr_prod_with_art.colli_pedana,\n" + + " dtb_ordr_prod_with_art.num_cnf / dtb_ordr_prod_with_art.colli_pedana AS num_pedane,\n" + + " dtb_ordr_prod_with_art.pos_riga,\n" + + " dtb_ordt.flag_evaso_prod,\n" + + " dtb_ordt.flag_evaso_forzato,\n" + + " CASE\n" + + " WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" + + " (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" + + " flag_evaso_prod = 'E'))\n" + + " AND dtb_ordt.flag_evaso_forzato = 'N'\n" + + " THEN 'I'\n" + + " WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" + + " THEN flag_evaso_prod\n" + + " END AS flag_ordine_evaso,\n" + + " dtb_ordt.gestione,\n" + + " dtb_ordt.data_ord,\n" + + " dtb_ordt.cod_tcol_UL,\n" + + " mtb_tcol.descrizione AS descrizione_tcol,\n" + + " dtb_ordt.cod_anag,\n" + + " gtb_anag.rag_soc AS rag_soc_anag,\n" + + " dtb_ordt.rif_ord,\n" + + " dtb_ordt.cod_vdes,\n" + + " dtb_ordt.cod_mdep,\n" + + " dtb_ordt.num_ord,\n" + + " dtb_ord_steps.cod_jfas,\n" + + " dtb_ordt.cod_jfas AS cod_jfas_lav,\n" + + " mtb_partita_mag.partita_mag,\n" + + " dtb_ordt.note AS note_lav,\n" + + " mtb_partita_mag.data_scad,\n" + + " dtb_ordt.cod_prod,\n" + + " jtb_comt.descrizione AS descrizione_commessa,\n" + + " dtb_ordt.data_iniz_prod,\n" + + " q.max_step,\n" + + " q.max_fase,\n" + + " q.num_fase,\n" + + " IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" + + " (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1), 'Colli',\n" + + " jtb_cicl.unt_mis_prod)\n" + + " AS unt_mis_prod,\n" + + " IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" + + " (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1),\n" + + " dtb_ordr_prod_with_art.colli_pedana, jtb_cicl.qta_prod)\n" + + " AS qta_batch_prod,\n" + + " IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, mtb_aart.qta_cnf,\n" + + " jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" + + " dtb_ord_steps.data_iniz,\n" + + " dtb_ord_steps.data_fine,\n" + + " dtb_ord_steps.qta_lav AS qta_lav,\n" + + " IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" + + " dtb_ordt.qta_prod) AS qta_prod,\n" + + " dtb_ord_steps.hr_num,\n" + + " dtb_ord_steps.descrizione_attivita,\n" + + " 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" + + " ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" + + " q.elapsed_time,\n" + + " SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite,\n" + + " COUNT(mtb_colr.num_collo) AS udc_trasferiti,\n" + + " CASE\n" + + " WHEN (in_production_machines.max_data_mov IS NOT NULL AND (q.max_step = 0 OR\n" + + " (q.max_step > 0 AND\n" + + " dtb_ord_steps.data_fine IS NOT NULL AND\n" + + " DATEDIFF(MINUTE,\n" + + " dtb_ord_steps.data_fine,\n" + + " in_production_machines.max_data_mov) >\n" + + " 5)))\n" + + " THEN 'IN AVVIO'\n" + + " WHEN q.max_step = 0\n" + + " THEN 'PROGRAMMATO'\n" + + " WHEN data_fine IS NULL\n" + + " THEN 'IN CORSO'\n" + + " ELSE 'IN PAUSA'\n" + + " END\n" + + " AS stato,\n" + + " CONVERT(INT, SUM(ISNULL(mtb_colr.qta_col / dtb_ordr_prod_with_art.calc_rap_conv, 0))) AS pz_trasferiti,\n" + + " CASE\n" + + " WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" + + " (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" + + " SUM(ISNULL(mtb_colr.qta_col, 0))) > 0\n" + + " THEN\n" + + " (jtb_dist_clav_dir.duration /\n" + + " ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" + + " (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" + + " SUM(ISNULL(mtb_colr.qta_col, 0)))\n" + + " ELSE 0 END AS run_time_sec,\n" + + " jl.id_lotto,\n" + + " jlt.data_lotto\n" + + "\n" + + " FROM dtb_ord_steps\n" + + " INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" + + " AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" + + " AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" + + " LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" + + " ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" + + " LEFT OUTER JOIN jtb_dist_clav_dir\n" + + " ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" + + " dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" + + " LEFT OUTER JOIN mtb_partita_mag\n" + + " ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" + + " dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" + + " mtb_partita_mag.flag_stato = 'A'\n" + + " LEFT OUTER JOIN mtb_colr_sum mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord AND\n" + + " dtb_ordt.gestione = mtb_colr.gestione AND\n" + + " dtb_ordt.num_ord = mtb_colr.num_ord AND\n" + + " dtb_ordt.cod_prod = mtb_colr.cod_mart\n" + + " LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" + + " INNER JOIN dtb_ord_max_step q ON dtb_ord_steps.gestione = q.gestione AND\n" + + " dtb_ord_steps.data_ord = q.data_ord AND\n" + + " dtb_ord_steps.num_ord = q.num_ord AND\n" + + " dtb_ord_steps.id_step = q.max_step AND\n" + + " dtb_ord_steps.cod_jfas = q.cod_jfas\n" + + " LEFT OUTER JOIN dtb_ordr_prod_with_art\n" + + " ON dtb_ordr_prod_with_art.gestione_ord_prod =\n" + + " dtb_ordt.gestione_rif AND\n" + + " dtb_ordr_prod_with_art.data_ord_prod = dtb_ordt.data_ord_rif AND\n" + + " dtb_ordr_prod_with_art.num_ord_prod = dtb_ordt.num_ord_rif AND\n" + + " dtb_ordr_prod_with_art.riga_ord_prod = dtb_ordt.riga_ord_rif\n" + + " LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" + + " LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" + + " LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" + + " LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" + + " LEFT OUTER JOIN in_production_machines\n" + + " ON dtb_ord_steps.data_ord = in_production_machines.data_ord\n" + + " AND dtb_ord_steps.num_ord = in_production_machines.num_ord\n" + + " AND dtb_ord_steps.gestione = in_production_machines.gestione\n" + + " LEFT OUTER JOIN jtb_lotr jl\n" + + " ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" + + " dtb_ordt.gestione = jl.gestione AND\n" + + " dtb_ordt.data_ord = jl.data_ord AND\n" + + " dtb_ordt.num_ord = jl.num_ord\n" + + " LEFT OUTER JOIN jtb_lott jlt\n" + + " ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" + + "\n" + + " CROSS APPLY setup\n" + + " WHERE dtb_ordt.flag_annulla = 'N'\n" + + " AND (setup.flag_evaso IS NULL\n" + + " OR (\n" + + " (setup.flag_evaso = 'I'\n" + + " AND\n" + + " dtb_ord_steps.flag_step_attivo = 'S'\n" + + " AND (flag_evaso_prod = 'I'\n" + + " OR\n" + + " (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" + + " AND\n" + + " flag_evaso_prod = 'E'))\n" + + " AND dtb_ordt.flag_evaso_forzato = 'N'\n" + + " )\n" + + " OR (setup.flag_evaso = 'E '\n" + + " AND flag_evaso_prod = 'E')\n" + + " )\n" + + " )\n" + + " AND (setup.cod_jfas IS NULL\n" + + " OR dtb_ord_steps.cod_jfas IN (SELECT cod_jfas FROM setup_jfas))\n" + + " AND (setup.cod_anag IS NULL\n" + + " OR dtb_ordt.cod_anag = setup.cod_anag)\n" + + " GROUP BY dtb_ordr_prod_with_art.data_ord_prod,\n" + + " dtb_ordr_prod_with_art.num_ord_prod,\n" + + " dtb_ordr_prod_with_art.riga_ord_prod,\n" + + " dtb_ordr_prod_with_art.flag_avviabile,\n" + + " dtb_ordr_prod_with_art.flag_tracciabilita,\n" + + " dtb_ordr_prod_with_art.unt_ord,\n" + + " mtb_partita_mag.rap_conv2,\n" + + " mtb_partita_mag.rap_conv3,\n" + + " dtb_ordt.note,\n" + + " dtb_ordr_prod_with_art.rap_conv,\n" + + " dtb_ordt.descrizione_prod,\n" + + " dtb_ordt.descr_estesa_prod,\n" + + " dtb_ordr_prod_with_art.num_cnf,\n" + + " mtb_aart.qta_cnf,\n" + + " mtb_aart.gg_scad_partita,\n" + + " mtb_aart.flag_qta_cnf_fissa,\n" + + " dtb_ordr_prod_with_art.pos_riga,\n" + + " dtb_ordt.flag_evaso_prod,\n" + + " dtb_ordt.flag_evaso_forzato,\n" + + " dtb_ordt.gestione,\n" + + " dtb_ordt.data_ord,\n" + + " dtb_ordt.num_ord,\n" + + " dtb_ord_steps.cod_jfas,\n" + + " dtb_ordt.cod_jfas,\n" + + " dtb_ordt.cod_jcom,\n" + + " mtb_partita_mag.partita_mag,\n" + + " mtb_partita_mag.data_scad,\n" + + " dtb_ordt.cod_prod,\n" + + " dtb_ordt.data_iniz_prod,\n" + + " q.max_step,\n" + + " dtb_ord_steps.data_iniz,\n" + + " dtb_ord_steps.data_fine,\n" + + " dtb_ordt.cod_tcol_UL,\n" + + " dtb_ordt.cod_anag,\n" + + " gtb_anag.rag_soc,\n" + + " dtb_ordt.rif_ord,\n" + + " dtb_ordt.cod_vdes,\n" + + " dtb_ordt.cod_mdep,\n" + + " mtb_aart.colli_pedana,\n" + + " dtb_ord_steps.qta_prod,\n" + + " dtb_ordt.qta_prod,\n" + + " jtb_dist_clav_dir.duration,\n" + + " jtb_comt.descrizione,\n" + + " q.elapsed_time,\n" + + " dtb_ordr_prod_with_art.colli_pedana,\n" + + " dtb_ord_steps.hr_num,\n" + + " mtb_aart.unt_mis,\n" + + " mtb_aart.unt_mis2,\n" + + " mtb_aart.rap_conv2,\n" + + " mtb_aart.unt_mis3,\n" + + " mtb_aart.rap_conv3,\n" + + " dtb_ordr_prod_with_art.unt_ord2,\n" + + " dtb_ordr_prod_with_art.unt_ord3,\n" + + " dtb_ordr_prod_with_art.qta_ord,\n" + + " dtb_ordr_prod_with_art.qta_ord2,\n" + + " dtb_ordr_prod_with_art.qta_ord3,\n" + + " dtb_ordr_prod_with_art.rap_conv2,\n" + + " dtb_ordr_prod_with_art.rap_conv3,\n" + + " dtb_ordr_prod_with_art.qta_cnf,\n" + + " dtb_ordr_prod_with_art.cal_qta_cnf,\n" + + " dtb_ordr_prod_with_art.gg_scad_partita,\n" + + " jtb_cicl.qta_prod,\n" + + " jtb_cicl.rap_conv_prod,\n" + + " dtb_ord_steps.descrizione_attivita,\n" + + " jtb_cicl.unt_mis_prod,\n" + + " mtb_tcol.descrizione,\n" + + " dtb_ordt.qta_prod,\n" + + " dtb_ordt.rap_conv_prod,\n" + + " setupCaricoImmediato.flag_carico_scarico_immediato,\n" + + " in_production_machines.max_data_mov, q.num_fase, dtb_ord_steps.qta_lav, q.max_fase,\n" + + " jl.id_lotto,\n" + + " jlt.data_lotto)\n" + + " INSERT\n" + + " INTO @val\n" + + " SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" + + " cod_jcom,\n" + + " data_ord_prod,\n" + + " num_ord_prod,\n" + + " riga_ord_prod,\n" + + " flag_avviabile,\n" + + " flag_tracciabilita,\n" + + " unt_ord,\n" + + " rap_conv,\n" + + " unt_ord2,\n" + + " rap_conv2,\n" + + " unt_ord3,\n" + + " rap_conv3,\n" + + " descrizione_prod,\n" + + " num_pezzi,\n" + + " num_cnf,\n" + + " gg_scad_partita,\n" + + " qta_cnf,\n" + + " colli_pedana,\n" + + " num_pedane,\n" + + " pos_riga,\n" + + " flag_evaso_prod,\n" + + " flag_evaso_forzato,\n" + + " flag_ordine_evaso,\n" + + " gestione,\n" + + " data_ord,\n" + + " cod_tcol_UL,\n" + + " descrizione_tcol,\n" + + " cod_anag,\n" + + " rag_soc_anag,\n" + + " rif_ord,\n" + + " cod_vdes,\n" + + " cod_mdep,\n" + + " num_ord,\n" + + " cod_jfas,\n" + + " cod_jfas_lav,\n" + + " partita_mag,\n" + + " note_lav,\n" + + " data_scad,\n" + + " cod_prod,\n" + + " descrizione_commessa,\n" + + " data_iniz_prod,\n" + + " max_step,\n" + + " unt_mis_prod,\n" + + " qta_batch_prod,\n" + + " rap_conv_prod,\n" + + " data_iniz,\n" + + " data_fine,\n" + + " qta_prod,\n" + + " qta_lav,\n" + + " max_fase,\n" + + " num_fase,\n" + + " hr_num,\n" + + " descrizione_attivita,\n" + + " prod_std,\n" + + " elapsed_time,\n" + + " qta_trasferite,\n" + + " udc_trasferiti,\n" + + " stato,\n" + + " pz_trasferiti,\n" + + " run_time_sec,\n" + + " SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" + + " CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" + + " ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" + + " DATEADD(SECOND, SUM(run_time_sec)\n" + + " OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" + + " CASE\n" + + " WHEN data_ord_prod > GETDATE() THEN DATEADD(HH, 7, data_ord_prod)\n" + + " ELSE GETDATE() END) AS run_time_end,\n" + + " id_lotto,\n" + + " data_lotto\n" + + "\n" + + " FROM ord_lav\n" + + " ORDER BY ord_lav.data_ord,\n" + + " ord_lav.num_ord_prod,\n" + + " ord_lav.pos_riga,\n" + + " ord_lav.num_ord\n" + + " RETURN\n" + + "END" + ); + } + + @Override + public void down() throws Exception { + + } + +} \ No newline at end of file