Merge branch 'develop' into feature/Feature-ORDL

# Conflicts:
#	ems-core/src/main/java/it/integry/ems_model/rulescompleting/AgendaList.java
This commit is contained in:
2024-07-18 13:40:00 +02:00
36 changed files with 1037 additions and 85 deletions

View File

@@ -0,0 +1,585 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240708155342 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" +
" [peso_kg] [numeric](20, 5) 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" +
" mtb_aart.peso_kg\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, jlt.data_lotto, mtb_aart.peso_kg)\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" +
" peso_kg\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 {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240715105345 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE ntb_docr\n" +
" ADD causale_reso VARCHAR(5);");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,43 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240716090151 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("vvw_banc_riba", "CREATE VIEW [dbo].[vvw_banc_riba] AS SELECT \n" +
" DISTINCT vtb_riba.tipo_anag, \n" +
" vtb_riba.cod_anag, \n" +
" vtb_riba.data_doc, \n" +
" vtb_riba.ser_doc, \n" +
" vtb_riba.num_doc, \n" +
" CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.cod_banc WHEN 'F' THEN atb_forn.cod_banc END ELSE ctb_part.cod_banc END AS cod_banc, \n" +
" CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.cod_abi WHEN 'F' THEN atb_forn.cod_abi END ELSE ctb_part.cod_abi END AS cod_abi, \n" +
" CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.cod_cab WHEN 'F' THEN atb_forn.cod_cab END ELSE ctb_part.cod_cab END AS cod_cab,\n" +
" CASE WHEN ctb_part.tipo_anag IS NULL THEN CASE vtb_riba.tipo_anag WHEN 'C' THEN vtb_clie.iban WHEN 'F' THEN atb_forn.iban END ELSE ctb_part.iban END AS iban,\n" +
" ctb_part.flag_verificata \n" +
" /*, ctb_scad.note as note*/\n" +
"FROM \n" +
" vtb_riba \n" +
" LEFT OUTER JOIN ctb_part ON vtb_riba.tipo_anag = ctb_part.tipo_anag \n" +
" AND vtb_riba.cod_anag = ctb_part.cod_anag \n" +
" AND vtb_riba.data_doc = ctb_part.data_doc \n" +
" AND vtb_riba.ser_doc = ctb_part.ser_doc \n" +
" AND vtb_riba.num_doc = ctb_part.num_doc \n" +
" /*LEFT OUTER JOIN ctb_scad ON ctb_scad.tipo_anag = vtb_riba.tipo_anag AND ctb_scad.cod_anag = vtb_riba.cod_anag AND ctb_scad.data_doc = vtb_riba.data_doc AND ctb_scad.ser_doc = vtb_riba.ser_doc AND ctb_scad.num_doc = vtb_riba.num_doc AND ctb_scad.id_riga = vtb_riba.num_scad */\n" +
" LEFT OUTER JOIN vtb_clie ON vtb_riba.cod_anag = vtb_clie.cod_anag \n" +
" LEFT OUTER JOIN atb_forn ON vtb_riba.cod_anag = atb_forn.cod_anag");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240716091543 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("update stb_gest_setup set key_section ='D_CDISTEFF_REP' where gest_name = 'W_CDISTEFF_DISP';");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240716093600 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isCustomer(IntegryCustomer.Carelli)) {
updateSetupValue("W_CDISTEFF_DISP", "DATAWINDOW", "D_CDISTEFF_REP", "D_CDISTEFF_CARELLI_REP");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240717122430 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE mtb_grup\n" +
" ADD flag_attivo bit default 1",
"UPDATE mtb_grup SET flag_attivo = 1",
"ALTER TABLE mtb_grup ALTER COLUMN flag_attivo bit NOT NULL;");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,31 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.StbActivityNotification;
public class Migration_20240717124607 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (existsColumn(StbActivityNotification.ENTITY, "user_name"))
return;
executeStatement(
"ALTER TABLE stb_activity_notification\n" +
" ADD user_name VARCHAR(40);",
"ALTER TABLE stb_activity_notification\n" +
" ADD CONSTRAINT stb_activity_notification_stb_user_user_name_fk\n" +
" FOREIGN KEY (user_name) REFERENCES stb_user;"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240718093241 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE [dbo].[mtb_aart] WITH NOCHECK ADD CONSTRAINT [CHK_mtb_aart_rap_conv2] CHECK (([unt_mis2] is not null and [rap_conv2]<>(0))or [unt_mis2] is null )" ,
"ALTER TABLE [dbo].[mtb_aart] CHECK CONSTRAINT [CHK_mtb_aart_rap_conv2]",
"ALTER TABLE [dbo].[mtb_aart] WITH NOCHECK ADD CONSTRAINT [CHK_mtb_aart_rap_conv3] CHECK (([unt_mis3] is not null and [rap_conv3]<>(0)or [unt_mis3] is null))",
"ALTER TABLE [dbo].[mtb_aart] CHECK CONSTRAINT [CHK_mtb_aart_rap_conv3]");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -260,6 +260,9 @@ public class DocOrdUntMisRules extends QueryRules {
private static HashMap<String, BigDecimal> calcQtaAlternative(MtbAart mtbAart, MtbPartitaMag mtbPartitaMag, MtbUntMis mtbUntMis, BigDecimal numCnf, BigDecimal qtaUM1, BigDecimal rapConvUM1, BigDecimal rapConvOld, BigDecimal pesoNetto) throws Exception {
BigDecimal rapConvArt = getRapConvUM(mtbUntMis.getUntMis(), mtbAart, mtbPartitaMag);
if (UtilityBigDecimal.isNullOrZero(rapConvArt))
throw new Exception(String.format("Rapporto di conversione 0 sull'articolo %s unità di misura %s ", mtbAart.getCodMart(), mtbUntMis.getUntMis()));
BigDecimal qtaCnfArt = mtbAart.getQtaCnf();
String flagDig = mtbUntMis.getFlagDig();
Integer cifreDec = mtbUntMis.getCifreDec().intValue();
@@ -280,14 +283,12 @@ public class DocOrdUntMisRules extends QueryRules {
//VALUTARE COME GESTIRE LA VARIAZIONE DELLA QUANTITA SU UNA RIGA
qta = (qtaUM1.multiply(rapConvUM1)).divide(
UtilityBigDecimal.isNull(rapConvOld, rapConvArt), 5, RoundingMode.HALF_UP);
}
if (qta != null) {
qta = qta.setScale(cifreDec, RoundingMode.HALF_UP);
}
HashMap<String, BigDecimal> datiQta = calcQta(mtbUntMis, numCnf, pesoNetto, qta);
return datiQta;

View File

@@ -78,8 +78,11 @@ public class ImportDirectoryOperationRunner extends BaseDirectoryOperationRunner
errorMessage = Stream.of(serviceRestResponse.getMessages())
.filter(x->x.getLevel() != null && x.getLevel()== MessageDTO.Level.ERROR).map(x->x.getText()).findFirst().orElse(null);
}
logger.error(String.format("Operazione [ID:%s, Name:%s] - Eccezione", this.getDtoInstance().getId(), this.getDtoInstance().getName()),
new Exception(errorMessage));
if (!UtilityString.isNullOrEmpty(errorMessage)){
logger.error(String.format("Operazione [ID:%s, Name:%s] - Eccezione", this.getDtoInstance().getId(), this.getDtoInstance().getName()),
new Exception(errorMessage));
}
}

View File

@@ -96,6 +96,14 @@ public class UserService {
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
public String retrieveFullName(String username) throws Exception {
String sql = Query.format("SELECT full_name\n" +
"FROM stb_user\n" +
"WHERE user_name = {}", username);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
public List<String> retrieveAvailableProfiles(String username) {
List<String> profiles;

View File

@@ -38,6 +38,9 @@ public class MtbGrup extends EntityBase implements EquatableEntityInterface<MtbG
@SqlField(value = "tipo_mgrp", maxLength = 3, nullable = true)
private String tipoMgrp;
@SqlField(value = "flag_attivo", nullable = false, defaultObjectValue = "1")
private Boolean flagAttivo;
@EntityChild
private List<MtbSgrp> mtbSgrp;
@@ -112,6 +115,14 @@ public class MtbGrup extends EntityBase implements EquatableEntityInterface<MtbG
this.mtbSfam = mtbSfam;
}
public Boolean getFlagAttivo() {
return flagAttivo;
}
public void setFlagAttivo(Boolean flagAttivo) {
this.flagAttivo = flagAttivo;
}
@Override
protected void deleteChilds() throws Exception {
MtbSfam mtbSfam = new MtbSfam();

View File

@@ -90,6 +90,9 @@ public class NtbDocr extends EntityBase {
@SqlField(value = "data_ord", nullable = true)
private Date dataOrd;
@SqlField(value = "causale_reso", maxLength = 5, nullable = true)
private String causaleReso;
@ImportFromParent
private String causale;
@@ -337,6 +340,14 @@ public class NtbDocr extends EntityBase {
return this;
}
public String getCausaleReso() {
return causaleReso;
}
public void setCausaleReso(String causaleReso) {
this.causaleReso = causaleReso;
}
@Override
protected void insertChilds() throws Exception {
}

View File

@@ -32,9 +32,8 @@ public class StbActivityNotification extends EntityBase {
@SqlField(value = "notification_note", maxLength = 255, nullable = true)
private String notificationNote;
public StbActivityNotification() {
super();
}
@SqlField(value = "user_name", maxLength = 40)
private String userName;
public String getActivityId() {
return activityId;
@@ -68,15 +67,12 @@ public class StbActivityNotification extends EntityBase {
this.notificationNote = notificationNote;
}
@Override
protected void insertChilds() throws Exception {
public String getUserName() {
return userName;
}
@Override
protected void updateChilds() throws Exception {
}
@Override
protected void deleteChilds() throws Exception {
public StbActivityNotification setUserName(String userName) {
this.userName = userName;
return this;
}
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems_model.rulescompleting;
import it.integry.ems.utility.UtilityDebug;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.event.rule.*;
@@ -29,7 +30,7 @@ public class AgendaList extends DefaultAgendaEventListener {
if (mapTotalTimeGroupRule.get(event.getMatch().getRule().getName()) == null)
mapTotalTimeGroupRule.put(event.getMatch().getRule().getName(), System.nanoTime());
String message = new Date() + " RULE " + event.getMatch().getRule().getName() + " before apply...";
// if (UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer())
if (UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer())
System.out.println(message);
logger.trace(message);
}
@@ -40,7 +41,7 @@ public class AgendaList extends DefaultAgendaEventListener {
mapTotalTimeGroupRule.put(event.getMatch().getRule().getName(), System.nanoTime() - lastVal);
String errorText = new Date() + " RULE " + event.getMatch().getRule().getName() + " applyed";
// if (UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer())
if (UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer())
System.out.println(errorText);
logger.trace(errorText);
}

View File

@@ -8,4 +8,10 @@ public class UtilityInteger {
public static boolean isNullOrZero(Integer numCollo) {
return numCollo == null || numCollo == 0;
}
public static Integer stringToInteger(String str) {
if (!UtilityString.isNullOrEmpty(str)) { return Integer.parseInt(str); }
return null;
}
}

View File

@@ -179,11 +179,18 @@ end
rule "completeInseritoDaAttivita"
when
eval(completeRulesEnabled)
$entity : StbActivity(userCreator == null)
$entity : StbActivity(userCreator == null && operation != OperationType.DELETE)
then
modify ( $entity ) { setUserCreator(username) }
end
rule "completeUserNameActivityNotification"
when
eval(completeRulesEnabled)
$entity : StbActivityNotification(userName == null && operation != OperationType.DELETE)
then
modify ( $entity ) { setUserName(username) }
end
rule "completeActivityIdRapp"
when

View File

@@ -97,6 +97,9 @@ public class ActivityDTO {
@SqlField(value = "parent_activity_id")
private String parentActivityId;
@SqlField(value = "parent_activity_type")
private String parentActivityType;
@SqlField(value = "richiedente")
private String richiedente;
@@ -499,6 +502,15 @@ public class ActivityDTO {
return this;
}
public String getParentActivityType() {
return parentActivityType;
}
public ActivityDTO setParentActivityType(String parentActivityType) {
this.parentActivityType = parentActivityType;
return this;
}
public String getRichiedente() {
return richiedente;
}

View File

@@ -2,6 +2,8 @@ package it.integry.ems.activity.dto;
import it.integry.ems_model.annotation.SqlField;
import java.util.Date;
public class TreeViewDTO {
@SqlField("cod_jcom")
@@ -31,6 +33,9 @@ public class TreeViewDTO {
@SqlField("esito")
private String esito;
@SqlField("data_ins_act")
private Date dataInsAct;
public String getCodJcom() {
return codJcom;
}
@@ -111,4 +116,13 @@ public class TreeViewDTO {
this.esito = esito;
return this;
}
public Date getDataInsAct() {
return dataInsAct;
}
public TreeViewDTO setDataInsAct(Date dataInsAct) {
this.dataInsAct = dataInsAct;
return this;
}
}

View File

@@ -4,11 +4,20 @@ import java.time.LocalDate;
public class UserAbsenceRequestDTO {
private String username;
private LocalDate dataInizio;
private LocalDate dataFine;
private String giustificativo;
private String note;
public String getUsername() {
return username;
}
public UserAbsenceRequestDTO setUsername(String username) {
this.username = username;
return this;
}
public LocalDate getDataInizio() {
return dataInizio;

View File

@@ -923,6 +923,7 @@ public class ActivityService {
" ISNULL(parent.project_description, '') AS 'project_description',\n" +
" ISNULL(parent.activity_description, 'Altre Attività') AS 'parent_activity_description',\n" +
" creator.full_name AS 'user_creator_name',\n" +
" parent.activity_type_id AS 'parent_activity_type',\n" +
" CASE\n" +
" WHEN stb_activity_result.flag_stato_attivita IS NULL THEN 0 --backlog\n" +
" WHEN stb_activity_result.flag_stato_attivita = 0 THEN 1 --programmato\n" +
@@ -964,6 +965,7 @@ public class ActivityService {
" stb_activity.activity_description AS 'activity_description',\n" +
" stb_activity.activity_id,\n" +
" stb_activity.user_name,\n" +
" stb_activity.activity_type_id,\n" +
" stb_activity.persona_rif AS 'responabile_progetto'\n" +
" FROM stb_activity\n" +
" LEFT OUTER JOIN stb_activity parent\n" +
@@ -1010,6 +1012,7 @@ public class ActivityService {
" processi.descr_prodotto,\n" +
" processi.project_description,\n" +
" processi.parent_activity_description,\n" +
" processi.parent_activity_type,\n" +
" processi.tipo_attivita,\n" +
" processi.data_inserimento,\n" +
" processi.ultima_modifica,\n" +
@@ -1370,7 +1373,8 @@ public class ActivityService {
" stb_activity.activity_type_id,\n" +
" count_activity.row,\n" +
" CAST(IIF(stb_activity.effective_enddate IS NULL, 1, 0) AS BIT) AS isFinished,\n" +
" stb_activity.activity_result_id AS esito\n" +
" stb_activity.activity_result_id AS esito,\n" +
" stb_activity.data_ins_act\n" +
"FROM commesse\n" +
" CROSS APPLY [dbo].[getTreeViewActivity](commesse.cod_jcom) t\n" +
" INNER JOIN stb_activity ON t.activity_id = stb_activity.activity_id\n" +

View File

@@ -115,17 +115,77 @@ public class UserAbsenceService {
}
public void modifyAbsence(UserAbsenceRequestDTO assenza, String username) throws Exception {
String codJflav = userService.retrieveCodJflav(username);
String fullname = requestDataDTO.getUser().getFullname();
String codJflav;
String fullname;
if (UtilityString.isNullOrEmpty(assenza.getUsername())) {
codJflav = userService.retrieveCodJflav(username);
fullname = requestDataDTO.getUser().getFullname();
} else {
codJflav = userService.retrieveCodJflav(assenza.getUsername());
fullname = userService.retrieveFullName(assenza.getUsername());
}
if (assenza.getDataInizio() == null) throw new Exception("Errore nella data inizio");
JtbRLavt jtbRLavt = new JtbRLavt();
jtbRLavt.setGiustificativo(assenza.getGiustificativo())
.setDataLav(UtilityLocalDate.localDateToDate(assenza.getDataInizio()))
.setCodJflav(codJflav)
.setNote(assenza.getNote())
.setOperation(OperationType.UPDATE);
String giustificativo = WordUtils.capitalize(assenza.getGiustificativo().toLowerCase());
String note = assenza.getNote();
UtilityEntity.throwEntitiesException(entityProcessor.processEntity(jtbRLavt, multiDBTransactionManager));
String subject = String.format("Modifica %s di %s", giustificativo, fullname);
String message = String.format("%s di %s per il giorno: %s.", giustificativo, fullname, assenza.getDataInizio());
if (!UtilityString.isNullOrEmpty(note)) {
message = message.concat(String.format("\nNote: %s", note));
}
mailService.sendMail("amministrazione@integry.it", null, subject, message);
}
public void deleteAbsence(UserAbsenceRequestDTO assenza, String username) throws Exception {
String codJflav = userService.retrieveCodJflav(username);
String fullname = requestDataDTO.getUser().getFullname();
String codJflav;
String fullname;
if (UtilityString.isNullOrEmpty(assenza.getUsername())) {
codJflav = userService.retrieveCodJflav(username);
fullname = requestDataDTO.getUser().getFullname();
} else {
codJflav = userService.retrieveCodJflav(assenza.getUsername());
fullname = userService.retrieveFullName(assenza.getUsername());
}
if (assenza.getDataInizio() == null) throw new Exception("Errore nella data inizio");
JtbRLavt jtbRLavt = new JtbRLavt();
jtbRLavt.setGiustificativo(assenza.getGiustificativo())
.setDataLav(UtilityLocalDate.localDateToDate(assenza.getDataInizio()))
.setCodJflav(codJflav)
.setNote(assenza.getNote())
.setOperation(OperationType.DELETE);
String giustificativo = WordUtils.capitalize(assenza.getGiustificativo().toLowerCase());
String note = assenza.getNote();
UtilityEntity.throwEntitiesException(entityProcessor.processEntity(jtbRLavt, multiDBTransactionManager));
String subject = String.format("Eliminazione %s di %s", giustificativo, fullname);
String message = String.format("%s di %s per il giorno: %s.", giustificativo, fullname, assenza.getDataInizio());
if (!UtilityString.isNullOrEmpty(note)) {
message = message.concat(String.format("\nNote: %s", note));
}
mailService.sendMail("amministrazione@integry.it", null, subject, message);
}
}

View File

@@ -326,7 +326,7 @@ public class ImportListiniAcquistoApuliaCarrefourService {
" mtb_lisa_apulia_succ.qta_cnf,\n" +
" mtb_lisa_apulia_succ.colli_x_pedane,\n" +
" mtb_lisa_apulia_succ.linea,\n" +
" CASE WHEN mtb_lisa_apulia_succ.cod_alis LIKE 'AP%[0-9]%' THEN 'RIF' ELSE 'DIR' END tipo_listino,\n" +
" CASE WHEN mtb_lisa_apulia_succ.cod_alis LIKE 'AP%' and IsNumeric(RIGHT(cod_alis,3)) = 1 THEN 'RIF' ELSE 'DIR' END tipo_listino,\n" +
" mtb_lisa_apulia_succ.anno_contratto,\n" +
" mtb_lisa_apulia_succ.perc_contratto,\n" +
" mtb_lisa_apulia_succ.rag_soc_forn,\n" +

View File

@@ -17,6 +17,7 @@ public class CreaOrdineProdDTO {
private BigDecimal colliPedana;
private String untOrd;
private List<ModificheDistintaDTO> modificheDistinta = new ArrayList<>();
private String descrizionePartita;
public LocalDate getDataOrd() {
return dataOrd;
@@ -116,4 +117,13 @@ public class CreaOrdineProdDTO {
this.modificheDistinta = modificheDistinta;
return this;
}
public String getDescrizionePartita() {
return descrizionePartita;
}
public CreaOrdineProdDTO setDescrizionePartita(String descrizionePartita) {
this.descrizionePartita = descrizionePartita;
return this;
}
}

View File

@@ -366,6 +366,11 @@ public class OrdineLavorazioneDTO {
@JsonSerialize
private LocalDate dataLotto;
@SqlField(value = "peso_kg")
@JsonProperty("pesoKg")
@JsonSerialize
private BigDecimal pesoKg;
private List<AvailableClassMercDTO> availableClassMerc;
public Date getDataOrdProd() {
@@ -927,6 +932,10 @@ public class OrdineLavorazioneDTO {
return this;
}
public BigDecimal getPesoKg() {
return pesoKg;
}
public BigDecimal getQtaLav() {
return qtaLav;
}

View File

@@ -358,7 +358,8 @@ public class ProductionOrderDataHandlerService {
" END AS stato," +
" convert(int, SUM(ISNULL(mtb_colr.qta_col / (case when mtb_aart.unt_mis in ('PZ','NR') then 1 else " +
" case when mtb_aart.unt_mis2 in ('PZ','NR') then mtb_aart.rap_conv2 " +
" else 1 end end), 0))) AS pz_trasferiti" +
" else 1 end end), 0))) AS pz_trasferiti," +
" mtb_aart.peso_kg" +
" FROM (SELECT MAX(id_step) " +
" OVER ( PARTITION BY gestione, data_ord, num_ord, num_fase, cod_jfas) AS max_step_by_num_fase, " +
" * " +
@@ -490,7 +491,7 @@ public class ProductionOrderDataHandlerService {
" ORDER BY dtb_ordr.data_ord, dtb_ordr.num_ord, dtb_ordr.pos_riga, dtb_ordt.num_ord";
}
List<OrdineLavorazioneDTO> ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class);
List<OrdineLavorazioneDTO> ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class);
if (ordiniLavorazioneList != null && !ordiniLavorazioneList.isEmpty()) {
for (OrdineLavorazioneDTO ordineDTO : ordiniLavorazioneList) {

View File

@@ -979,19 +979,9 @@ public class ProductionService {
Date dataOrd = Date.from(creaOrdineProdDTO.getDataOrd().atStartOfDay(ZoneId.systemDefault()).toInstant());
String partitaMag = PartitaMagRules.suggestCodePartitaMag(
multiDBTransactionManager.getPrimaryConnection(),
new DatiPartitaMagDTO()
.setCodMart(creaOrdineProdDTO.getCodMart())
.setPartitaMag(creaOrdineProdDTO.getPartitaMag())
.setCodAnag(creaOrdineProdDTO.getCodAnag())
.setDataOrd(dataOrd)
);
DtbOrdr rigaOrdProd = new DtbOrdr()
.setCodMart(creaOrdineProdDTO.getCodMart())
.setPartitaMag(partitaMag)
.setPartitaMag(creaOrdineProdDTO.getPartitaMag())
.setValUnt(creaOrdineProdDTO.getValUnt())
.setNumCnf(creaOrdineProdDTO.getNumCnf())
.setColliPedana(creaOrdineProdDTO.getColliPedana())

View File

@@ -1304,30 +1304,21 @@ public class VariazioniPvService {
formatFile,
Entity.json(variazioniPvInputDTO));
boolean testError = false;
String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), exportType, formatFile, "EMAIL_FOR_LOG");
int numVariazioni = variazioniPvInputDTO.getVariazioni().size();
if (!UtilityString.isNullOrEmpty(emailForLog) && numVariazioni > 0) {
String oggetto =
"Esportazione " +
variazioniPvInputDTO.getTipoReportEnum().toString() +
" punto vendita " +
userName;
if (testError)
throw new Exception("TEST ERROR");
String messaggio = oggetto +
" avvenuta con successo." + CommonConstants.A_CAPO +
" Sono stati esportati n. " + numVariazioni + " articoli";
//
// String emailForLog = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), exportType, formatFile, "EMAIL_FOR_LOG");
// int numVariazioni = variazioniPvInputDTO.getVariazioni().size();
// if (!UtilityString.isNullOrEmpty(emailForLog) && numVariazioni > 0) {
// String oggetto =
// "Esportazione " +
// variazioniPvInputDTO.getTipoReportEnum().toString() +
// " punto vendita " +
// userName;
//
// String messaggio = oggetto +
// " avvenuta con successo." + CommonConstants.A_CAPO +
// " Sono stati esportati n. " + numVariazioni + " articoli";
//
//
// mailService.sendMailPrimary(multiDBTransactionManager, null, null, emailForLog, null, null, oggetto, messaggio, false, false, null, null, null, false, null);
// }
mailService.sendMailPrimary(multiDBTransactionManager, null, null, emailForLog, null, null, oggetto, messaggio, false, false, null, null, null, false, null);
}
}
}
}

View File

@@ -10,10 +10,7 @@ import it.integry.ems_model.entity.NtbDocr;
import it.integry.ems_model.entity.NtbDoct;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -115,7 +112,7 @@ public class ReceiptsParser implements IReceiptsParser {
if (head.length >= 35) {
receipts.setDataDocRif(UtilityDate.StringToDate(head[32], CommonConstants.DATETIME_FORMAT_DMY_SLASHED));
receipts.setCodCassaRif(head[33]);
receipts.setNumDocRif(Integer.parseInt(head[34]));
receipts.setNumDocRif(UtilityInteger.stringToInteger(head[34]));
}
if (("EP").equals(flagTrans) || ("UP").equals(flagTrans)) {
@@ -214,6 +211,10 @@ public class ReceiptsParser implements IReceiptsParser {
receipts.setNtbDocr(new ArrayList<NtbDocr>());
NtbDocr row = new NtbDocr();
if (head.length >= 36){
row.setCausaleReso(head[35]);
}
String[] rawString = head;
if (startLine == 0) {

View File

@@ -68,21 +68,23 @@ public class ScontriniImportService {
UtilityFile.fileDelete(filePath);
}
for (EntityBase entity : receipts) {
try {
if (entity instanceof NtbDoct) {
NtbDoct receipt = (NtbDoct) entity;
//salta gli scontrini vuoti generati da casi non previsti
if (UtilityString.isNullOrEmpty(receipt.getCodMdep()) && UtilityString.isNullOrEmpty(receipt.getCodCassa()) &&
receipt.getDataDoc() == null)
continue;
}
entityProcessor.processEntity(entity, multiDBTransactionManager);
if (receipts != null){
for (EntityBase entity : receipts) {
try {
if (entity instanceof NtbDoct) {
NtbDoct receipt = (NtbDoct) entity;
//salta gli scontrini vuoti generati da casi non previsti
if (UtilityString.isNullOrEmpty(receipt.getCodMdep()) && UtilityString.isNullOrEmpty(receipt.getCodCassa()) &&
receipt.getDataDoc() == null)
continue;
}
entityProcessor.processEntity(entity, multiDBTransactionManager);
} catch (Exception e) {
anomalie.add(setAnomalia(e));
} catch (Exception e) {
anomalie.add(setAnomalia(e));
}
entitiesReturn.add(entity);
}
entitiesReturn.add(entity);
}
return entitiesReturn;

View File

@@ -81,7 +81,7 @@ public class VariazioniPvExportServices {
}
if (variazioniPvDTO != null && UtilityString.isNullOrEmpty(variazioniPvDTO.getFileXml())) {
boolean existJson = (variazioniPvDTO.getVariazioni() != null || variazioniPvDTO.getVariazioni().size() > 0);
boolean existJson = (variazioniPvDTO.getVariazioni() != null && variazioniPvDTO.getVariazioni().size() > 0);
if (variazioniPvDTO.getDataValidita() == null) {
variazioniPvDTO.setDataValidita( UtilityDate.RelativeDateTime(new Date(), 1));
}

View File

@@ -192,7 +192,7 @@ public class GiacenzaService {
" INNER JOIN art ON movimenti.cod_mart = art.cod_mart\n" +
" LEFT OUTER JOIN carelli_giacenza_prog giac ON giac.cod_mdep = movimenti.cod_mdep AND giac.cod_mart = art.cod_mart_mov\n" +
"WHERE movimenti.data_reg >= CAST(ISNULL(giac.data_reg, GETDATE()) AS DATE) AND \n" +
" (giac.tipo_car is null OR giac.tipo_car <> 'C' OR (giac.tipo_car = 'C' AND movimenti.data_ins >= giac.data_reg)) \n" +
" (giac.tipo_car is null OR giac.tipo_car <> 'R' OR (giac.tipo_car = 'R' AND movimenti.data_ins >= giac.data_reg)) \n" +
"GROUP BY movimenti.cod_mdep,\n " +
" art.cod_mart_mov,\n"+
" giac.qta_iniz\n").replace("[COD_MDEP]", codMdep);

View File

@@ -39,8 +39,8 @@ public class ExchangeColliImportController {
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam() String codAnag,
@RequestParam() String dataCert,
@RequestParam() String codMart,
@RequestParam() String codVdes
@RequestParam(required = false) String codMart,
@RequestParam(required = false) String codVdes
) throws Exception {
LocalDate dataCertificato = LocalDate.parse(dataCert);
return ServiceRestResponse.createPositiveResponse(exchangeColliImportService.getCertificati(codAnag,

View File

@@ -51,6 +51,10 @@ public class CertificatiSinfoOneDTO {
private BigDecimal sconto8;
@SqlField("scartoCq")
private BigDecimal scartoCq;
@SqlField("cod_vvet")
private String codVvet;
@SqlField("vettore")
private String vettore;
public String getCodAnag() {
return codAnag;
@@ -249,4 +253,22 @@ public class CertificatiSinfoOneDTO {
this.scartoCq = scartoCq;
return this;
}
public String getCodVvet() {
return codVvet;
}
public CertificatiSinfoOneDTO setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public String getVettore() {
return vettore;
}
public CertificatiSinfoOneDTO setVettore(String vettore) {
this.vettore = vettore;
return this;
}
}

View File

@@ -220,6 +220,8 @@ public class ExchangeColliImportService {
" TRIM(tagliando_pesa) AS tagliandoPesa,\n" +
" data_ora_lordo AS dataOraLordo,\n" +
" CONVERT(NUMERIC(15, 3), sconto8) AS sconto8,\n" +
" cod_vettore AS cod_vvet,\n" +
" vettore AS vettore,\n" +
" CONVERT(NUMERIC(15, 3), PMB_SCARTO_CQ) AS scartoCq\n " +
"FROM s1_Certificati\n" +
"WHERE cod_anag = {}\n" +

View File

@@ -12,10 +12,7 @@ import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.entity.StbGestSetupQuery;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -116,9 +113,21 @@ public class SystemMigrationService {
if (setup.getOperation() == OperationType.DELETE) {
operation = formatSetup("deleteSetup(%s, %s, %s);", setup.getGestName(), setup.getSection(), setup.getKeySection());
classBuilder.append("\t\t" + operation)
.append("\r\n");
} if (setup.getOperation() == OperationType.UPDATE) {
operation = formatSetup("updateSetupValue(%s, %s, %s, %s);", setup.getGestName(), setup.getSection(), setup.getKeySection(), setup.getValue());
classBuilder.append("\t\t" + operation)
.append("\r\n");
} else {
if (setup.getOperation() == OperationType.DELETE_THEN_INSERT) {
String keySection = UtilityHashMap.getValueIfExists(setup.getOldPk(), "key_section");
operation = formatSetup("deleteSetup(%s, %s, %s);", setup.getGestName(), setup.getSection(), keySection);
classBuilder.append("\t\t" + operation)
.append("\r\n");
}
if (!UtilityString.isNullOrEmpty(setup.getQueryDefault())){
operation =
formatSetup(