Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2024-10-24 13:18:06 +02:00
11 changed files with 1080 additions and 39 deletions

View File

@@ -0,0 +1,609 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241024131609 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" +
" [part_iva] [varchar](20) NULL,\n" +
" [rif_ord] [varchar](40) NULL,\n" +
" [cod_vdes] [varchar](5) NULL,\n" +
" [cod_mdep] [varchar](5) NOT NULL,\n" +
" [cod_mdep_prod] [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" +
" [data_cons_prod_max] [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" +
" setup_run_time\n" +
" AS (SELECT dbo.getGestSetup('PVM', 'MONITORAGGIO_LINEE_V2', 'RESTART_RUN_TIME_END') AS flag_restart),\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(CAST(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE())) AS BIGINT)) 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" +
" 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" +
" dtb_ordt.cod_mdep,\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 dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione AND\n" +
" dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_ordr.num_ord = dtb_ordt.num_ord\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" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" ISNULL(dtb_ordr_prod_with_art.cod_mdep, dtb_ordt.cod_mdep) AS cod_mdep_prod,\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" +
" dtb_ordt.data_cons_prod_max\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' OR jlt.data_chiusura IS NOT NULL))\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" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" dtb_ordr_prod_with_art.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, dtb_ordt.data_cons_prod_max)\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" +
" part_iva,\n" +
" rif_ord,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" cod_mdep_prod,\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" +
" CASE\n" +
" WHEN setup_run_time.flag_restart = 'S' THEN\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)\n" +
" ELSE\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas ORDER BY stato, cod_jfas, data_ord_prod, num_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" GETDATE())\n" +
" END AS run_time_end,\n" +
" id_lotto,\n" +
" data_lotto,\n" +
" peso_kg,\n" +
" data_cons_prod_max\n" +
" FROM ord_lav,\n" +
" setup_run_time\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

@@ -119,4 +119,9 @@ public class UtilityLocalDate {
.atZone(currentZone)
.toLocalDateTime();
}
public static LocalDateTime isNull(LocalDateTime dateToCheck, LocalDateTime fallbackValue) {
if (dateToCheck == null) return fallbackValue;
return dateToCheck;
}
}

View File

@@ -199,12 +199,13 @@ public class RossoGarganoProductionService {
" mtb_partita_mag_carat.partita_mag,\n" +
" MIN(CASE WHEN carat = 'Lotto Produttore' THEN val_carat END) AS lottoProduttore,\n" +
" MIN(CASE WHEN carat = 'Modalita Raccolta' THEN val_carat END) AS modalitaRaccolta,\n" +
" MIN(CASE WHEN carat = 'RifAnalisi' THEN val_carat END) AS rifAnalisi,\n" +
" MIN(CASE WHEN carat = 'varieta' THEN val_carat END) AS varieta\n" +
" FROM mtb_partita_mag_carat\n" +
" INNER JOIN collo ON collo.partita_mag = mtb_partita_mag_carat.partita_mag AND\n" +
" collo.cod_mart = mtb_partita_mag_carat.cod_mart AND\n" +
" collo.activity_id = mtb_partita_mag_carat.activity_id\n" +
" WHERE carat IN ('Lotto Produttore', 'Modalita Raccolta', 'varieta')\n" +
" WHERE carat IN ('Lotto Produttore', 'Modalita Raccolta','RifAnalisi', 'varieta')\n" +
" GROUP BY mtb_partita_mag_carat.activity_id, mtb_partita_mag_carat.cod_mart,\n" +
" mtb_partita_mag_carat.partita_mag),\n" +
" ordRacc AS (SELECT dtb_ordt.data_ord,\n" +

View File

@@ -18,6 +18,7 @@ import it.integry.ems.service.MailService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.coollection.Coollection;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
@@ -228,7 +229,7 @@ public class DocumentProdService {
docT.setNumDoc(numDoc);
docT.setSerDoc(serDoc);
if (riapriOrdini.compareTo("S") == 0){
if (riapriOrdini.compareTo("S") == 0) {
DtbOrdt ordT = new DtbOrdt();
ordT.setGestione(gestione);
ordT.setDataOrd(dataOrd);
@@ -2335,7 +2336,6 @@ public class DocumentProdService {
return arrayEntity;
}
public List<EntityBase> generaDocumentiCLAV(Date dataLav, String codMdep) throws Exception {
String sql = "SELECT cod_anag FROM mtb_depo WHERE cod_mdep = " + UtilityDB.valueToString(codMdep);
@@ -2807,7 +2807,6 @@ public class DocumentProdService {
return arrayEntity;
}
public List<DtbDoct> generaDocumentiLavorazione(ChiusuraLavorazioneDTO dtoChiusura) throws Exception {
List<DtbDoct> listDocs = new ArrayList<>();
DtbOrdt ordine = dtoChiusura.getOrdine();
@@ -4125,7 +4124,6 @@ public class DocumentProdService {
return rows;
}
public void generateDocGiroconto(GirocontoLavorazioneDTO girocontoLavorazioneDTO) throws Exception {
if (!requestDataDTO.isValidUsername()) {
throw new UsernameNotFoundException("Utente " + requestDataDTO.getUsername() + " non riconoscuto!");
@@ -4220,8 +4218,8 @@ public class DocumentProdService {
slavRow.setOperation(OperationType.INSERT);
String sql =
it.integry.ems_model.utility.Query.format(
"SELECT cast(count(*) as bit) FROM mtb_partita_mag WHERE cod_mart = %s and partita_mag = %s",
materiaPrima.getCodMart(), row.getPartitaMag());
"SELECT cast(count(*) as bit) FROM mtb_partita_mag WHERE cod_mart = %s and partita_mag = %s",
materiaPrima.getCodMart(), row.getPartitaMag());
boolean existLotto = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
String partitaMag = null;
if (existLotto)
@@ -4230,7 +4228,7 @@ public class DocumentProdService {
sql =
it.integry.ems_model.utility.Query.format(
"SELECT partita_mag FROM mtb_partita_mag WHERE cod_mart = %s and data_scad in (select data_scad from mtb_partita_mag WHERE cod_mart = %s AND partita_mag = %s)",
materiaPrima.getCodMart(), row.getCodMart(), row.getPartitaMag());
materiaPrima.getCodMart(), row.getCodMart(), row.getPartitaMag());
partitaMag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
@@ -4318,7 +4316,7 @@ public class DocumentProdService {
cmd.close();
// Sostituire item padre da tutti gli item figli
sql = " update atb_fabbr " +
sql = " update atb_fabbr " +
" set /*item = replace(item, substring(" + UtilityDB.valueToString(item) + ", 8, LEN(" + UtilityDB.valueToString(item) + ") - 7), ''), */" +
" livello = livello -1, " +
" id_padre = case when livello -1 = 1 then null else id_padre end " +
@@ -4382,14 +4380,42 @@ public class DocumentProdService {
cmd.executeUpdate(sql);
cmd.close();
}
rs.close();ps.close();
rs.close();
ps.close();
conn.commit();
} catch (Exception e){
} catch (Exception e) {
conn.rollback();
throw new Exception("Errore aggiornamento criterio produttivo " + e.getMessage());
}
}
public DtbDoct sganciaDocumentoDaCollo(MtbColt mtbColt) throws Exception {
if(UtilityInteger.isNullOrZero(mtbColt.getNumDoc()))
return null;
DtbDoct docLav = new DtbDoct();
docLav
.setCodDtip(mtbColt.getCodDtip())
.setDataDoc(mtbColt.getDataDoc())
.setNumDoc(mtbColt.getNumDoc())
.setSerDoc(mtbColt.getSerDoc())
.setCodAnag(mtbColt.getCodAnag())
.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(docLav, true, multiDBTransactionManager);
if(UtilityInteger.isNullOrZero(docLav.getNumDoc()))
return null;
DtbDocr rows = new DtbDocr();
rows.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), docLav);
mtbColt.setCodDtip(EmsRestConstants.NULL)
.setDataDoc(EmsRestConstants.DATE_NULL)
.setNumDoc(EmsRestConstants.INTEGER_NULL)
.setSerDoc(EmsRestConstants.NULL);
entityProcessor.processEntity(mtbColt, true, multiDBTransactionManager);
return docLav;
}
}

View File

@@ -132,6 +132,8 @@ public class AccettazioneOrtoFruttaDTO implements Cloneable {
private String lottoProduttore;
@SqlField("modalitaRaccolta")
private String modalitaRaccolta;
@SqlField("rifAnalisi")
private String rifAnalisi;
@SqlField("codVzon")
private String codVzon;
@SqlField("indiceVariazione")
@@ -710,6 +712,15 @@ public class AccettazioneOrtoFruttaDTO implements Cloneable {
return this;
}
public String getRifAnalisi() {
return rifAnalisi;
}
public AccettazioneOrtoFruttaDTO setRifAnalisi(String rifAnalisi) {
this.rifAnalisi = rifAnalisi;
return this;
}
public String getCodVzon() {
return codVzon;
}

View File

@@ -147,19 +147,29 @@ public class OrtoFruttaProductionService {
List<MtbPartitaMagCarat> datiPartita;
MtbPartitaMagCarat lottoProd = new MtbPartitaMagCarat();
MtbPartitaMagCarat modalitaRaccolta = new MtbPartitaMagCarat();
MtbPartitaMagCarat rifAnalisi = new MtbPartitaMagCarat();
MtbPartitaMagCarat varietaRaccolta = new MtbPartitaMagCarat();
String caratLottoProd = "Lotto Produttore";
String caratModalitaRaccolta = "Modalita Raccolta";
String caratVarietaRaccolta = "Varieta";
String caratRifAnalisi = "RifAnalisi";
if (dto.getOriginal() != null) {
datiPartita = UtilityDB.executeSimpleQueryDTO(
multiDBTransactionManager.getPrimaryConnection(),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{}) and activity_id = {}", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta, caratVarietaRaccolta, activityId),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{},{}) and activity_id = {}",
dto.getCodMart(),
dto.getPartitaRaccolta(),
caratLottoProd,
caratModalitaRaccolta,
caratVarietaRaccolta,
caratRifAnalisi,
activityId),
MtbPartitaMagCarat.class);
if (!UtilityList.isNullOrEmpty(datiPartita)) {
lottoProd = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratLottoProd)).findFirst().orElse(new MtbPartitaMagCarat());
modalitaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratModalitaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
varietaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratVarietaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
rifAnalisi = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratRifAnalisi)).findFirst().orElse(new MtbPartitaMagCarat());
}
}
lottoProd
@@ -175,6 +185,12 @@ public class OrtoFruttaProductionService {
.setActivityId(activityId)
.setDataRilevazione(LocalDateTime.now())
.setOperation(OperationType.INSERT_OR_UPDATE);
rifAnalisi
.setCarat(caratRifAnalisi)
.setValCarat(dto.getRifAnalisi())
.setActivityId(activityId)
.setDataRilevazione(LocalDateTime.now())
.setOperation(OperationType.INSERT_OR_UPDATE);
varietaRaccolta
.setCarat(caratVarietaRaccolta)
.setValCarat(dto.getVarieta())
@@ -185,12 +201,13 @@ public class OrtoFruttaProductionService {
datiPartita.add(lottoProd);
datiPartita.add(modalitaRaccolta);
datiPartita.add(varietaRaccolta);
datiPartita.add(rifAnalisi);
MtbPartitaMag part = new MtbPartitaMag();
part
.setCodMart(dto.getCodMart())
.setPartitaMag(dto.getPartitaRaccolta())
.setDescrizione(dto.getRagSocProduttore()+" - "+dto.getVarieta())
.setDescrizione(dto.getRagSocProduttore() + " - " + dto.getVarieta())
.setOperation(OperationType.INSERT_OR_UPDATE);
part.setMtbPartitaMagCarat(datiPartita);
@@ -256,7 +273,7 @@ public class OrtoFruttaProductionService {
collo.setDataVers(dto.getDataVers());
MtbColr rowToEmpty = new MtbColr();
rowToEmpty.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(),collo);
rowToEmpty.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), collo);
MtbColr row = collo.getMtbColr().stream().filter(x -> x.getCodMart().equalsIgnoreCase(dto.getCodMart())).findFirst().orElse(new MtbColr());
if (row.getNumOrd() == null) {
collo.getMtbColr().add(row);
@@ -423,7 +440,7 @@ public class OrtoFruttaProductionService {
"SETUP",
"SER_DOC_SCAR");
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getCodAnag(), codDtip, activityId);
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getCodAnag(), codDtip, activityId);
PreparedStatement ps = multiDBTransactionManager.getPrimaryConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
DtbDoct slav = UtilityDB.executePreparedStatementDTOOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), ps, DtbDoct.class);
@@ -448,16 +465,19 @@ public class OrtoFruttaProductionService {
.setCodMdep(ordAcq.getCodMdep())
;
sql = "SELECT riga_ord from dtb_ordr where gestione = " + UtilityDB.valueToString(dto.getGestione()) + " " +
sql = "SELECT riga_ord from dtb_ordr where gestione = " + UtilityDB.valueToString(dto.getGestione()) + " " +
" and data_ord =" + UtilityDB.valueToString(dataOrd) + " " +
"AND num_ord = " + UtilityDB.valueToString(dto.getNumOrd()) + " " +
"AND cod_mart = " + UtilityDB.valueToString(ordAcq.getDtbOrdr().get(0).getCodMart()) + " " +
"AND partita_mag = " + UtilityDB.valueToString(ordAcq.getDtbOrdr().get(0).getPartitaMag());
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
BigDecimal qtaScarto = !UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()) ? dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP) : BigDecimal.ZERO;
BigDecimal qtaScarto = dto.getScarto();
if (UtilityBigDecimal.isNullOrZero(qtaScarto)) {
qtaScarto = !UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()) ?
dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 3, RoundingMode.HALF_UP) :
BigDecimal.ZERO;
}
BigDecimal qtaCnf = dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP);
BigDecimal qtaDoc = dto.getQtaCol().subtract(qtaScarto);
BigDecimal numCnf = qtaDoc.divide(qtaCnf, 2, RoundingMode.HALF_UP);
@@ -486,7 +506,7 @@ public class OrtoFruttaProductionService {
if (dto.getOriginal() != null && dto.isDDTEdited()) {
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getOriginal().getCodAnag(), dto.getOriginal().getCodDtipProvv(), activityId);
String sql = Query.format("SELECT * from dtb_doct where cod_anag = %s AND cod_dtip = %s and activity_id = %s ", dto.getOriginal().getCodAnag(), dto.getOriginal().getCodDtipProvv(), activityId);
PreparedStatement ps = multiDBTransactionManager.getPrimaryConnection().prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
DtbDoct oldDoc = UtilityDB.executePreparedStatementDTOOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), ps, DtbDoct.class);
@@ -543,17 +563,22 @@ public class OrtoFruttaProductionService {
.setSconto5(dto.getIndiceVariazione().negate())
.setOperation(OperationType.INSERT);
ddt.getDtbDocr().add(rowPlus);
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione())) {
BigDecimal qtaScarto = dto.getScarto();
if (UtilityBigDecimal.isNullOrZero(qtaScarto)) {
qtaScarto = !UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()) ?
dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 3, RoundingMode.HALF_UP) :
BigDecimal.ZERO;
}
if (!UtilityBigDecimal.isNullOrZero(qtaScarto)) {
DtbDocr rowScarto = new DtbDocr();
BigDecimal qtaDoc = dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
BigDecimal numCnf = qtaDoc.divide(qtaCnf, 2, RoundingMode.HALF_UP);
BigDecimal numCnf = qtaScarto.divide(qtaCnf, 2, RoundingMode.HALF_UP);
rowScarto
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
.setPartitaMag(ordAcq.getDtbOrdr().get(0).getPartitaMag())
.setDataOrd(ordAcq.getDataOrd())
.setNumOrd(ordAcq.getNumOrd())
.setRigaOrd(ordAcq.getDtbOrdr().get(0).getRigaOrd())
.setQtaDoc(qtaDoc.negate())
.setQtaDoc(qtaScarto.negate())
.setNumCnf(numCnf.negate())
.setQtaCnf(qtaCnf)
.setPesoLordo(dto.getPesoLordoPedane())
@@ -639,7 +664,7 @@ public class OrtoFruttaProductionService {
if (!UtilityList.isNullOrEmpty(docs)) {
docs = docs.stream().peek(x -> x.setOperation(OperationType.DELETE)).collect(Collectors.toList());
entityProcessor.processEntityList(docs, multiDBTransactionManager,true);
entityProcessor.processEntityList(docs, multiDBTransactionManager, true);
UtilityEntity.throwEntitiesException(docs);
}
}
@@ -659,7 +684,7 @@ public class OrtoFruttaProductionService {
.setPartitaMag(carats.get(0).getPartitaMag())
.setMtbPartitaMagCarat(carats)
.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(partita, true,multiDBTransactionManager);
entityProcessor.processEntity(partita, true, multiDBTransactionManager);
}
}

View File

@@ -1,16 +1,22 @@
package it.integry.ems.retail.wms.generic.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeCloseRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeEditRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeRequestDTO;
import it.integry.ems.retail.wms.generic.service.WMSMagazzinoBufferService;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@Scope("request")
@RequestMapping("wms/magazzino-buffer")
@@ -20,6 +26,8 @@ public class WMSMagazzinoBufferController {
@Autowired
private WMSMagazzinoBufferService wmsMagazzinoBufferService;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = "{posizione}/isVersamentoStarted", method = RequestMethod.POST)
@@ -53,13 +61,34 @@ public class WMSMagazzinoBufferController {
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{posizione}/cancelVersamentoMateriale", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse cancelVersamentoMateriale(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@PathVariable String posizione,
@RequestBody MagazzinoBufferVersamentoMaterialeRequestDTO dto) throws Exception {
@PathVariable String posizione,
@RequestBody MagazzinoBufferVersamentoMaterialeRequestDTO dto) throws Exception {
wmsMagazzinoBufferService.cancelVersamentoMateriale(dto, posizione);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "editVersamentoMateriale", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse editVersamentoMateriale(HttpServletRequest request, @RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody List<MagazzinoBufferVersamentoMaterialeEditRequestDTO> dtoList) throws Exception {
try {
wmsMagazzinoBufferService.editVersamentoMateriale(dtoList);
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {
try {
multiDBTransactionManager.rollbackAll();
} catch (Exception ex) {
logger.error(request.getRequestURI(), e);
}
logger.error(request.getRequestURI(), e);
return new ServiceRestResponse(EsitoType.KO, profileDB, e);
}
}
}

View File

@@ -3,12 +3,14 @@ package it.integry.ems.retail.wms.generic.dto;
import it.integry.ems_model.entity.MtbColt;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public class MagazzinoBufferVersamentoMaterialeCloseRequestDTO {
private MtbColt inputMtbColt;
private BigDecimal qtaTotDaScaricare;
private BigDecimal numCnfDaScaricare;
private LocalDateTime oraFineVersamento;
public MtbColt getInputMtbColt() {
@@ -37,4 +39,13 @@ public class MagazzinoBufferVersamentoMaterialeCloseRequestDTO {
this.numCnfDaScaricare = numCnfDaScaricare;
return this;
}
public LocalDateTime getOraFineVersamento() {
return oraFineVersamento;
}
public MagazzinoBufferVersamentoMaterialeCloseRequestDTO setOraFineVersamento(LocalDateTime oraFineVersamento) {
this.oraFineVersamento = oraFineVersamento;
return this;
}
}

View File

@@ -0,0 +1,223 @@
package it.integry.ems.retail.wms.generic.dto;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class MagazzinoBufferVersamentoMaterialeEditRequestDTO {
private BigDecimal qtaVers;
private BigDecimal numCnfVers;
private BigDecimal qtaCnf;
private String partitaMag;
private LocalDate dataCollo;
private String serCollo;
private String gestione;
private Integer numCollo;
private String codJfas;
private String descPosizione;
private String posizione;
private String codMart;
private String codMdep;
private LocalDateTime oraInizPrep;
private LocalDateTime oraFinePrep;
private LocalDate dataColloRif;
private String serColloRif;
private String gestioneRif;
private Integer numColloRif;
public BigDecimal getQtaVers() {
return qtaVers;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setQtaVers(BigDecimal qtaVers) {
this.qtaVers = qtaVers;
return this;
}
public BigDecimal getNumCnfVers() {
return numCnfVers;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setNumCnfVers(BigDecimal numCnfVers) {
this.numCnfVers = numCnfVers;
return this;
}
public LocalDate getDataCollo() {
return dataCollo;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public String getGestione() {
return gestione;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public String getCodJfas() {
return codJfas;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getDescPosizione() {
return descPosizione;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setDescPosizione(String descPosizione) {
this.descPosizione = descPosizione;
return this;
}
public String getPosizione() {
return posizione;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public String getCodMart() {
return codMart;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getCodMdep() {
return codMdep;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public LocalDateTime getOraInizPrep() {
return oraInizPrep;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setOraInizPrep(LocalDateTime oraInizPrep) {
this.oraInizPrep = oraInizPrep;
return this;
}
public LocalDateTime getOraFinePrep() {
return oraFinePrep;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setOraFinePrep(LocalDateTime oraFinePrep) {
this.oraFinePrep = oraFinePrep;
return this;
}
public LocalDate getDataColloRif() {
return dataColloRif;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setDataColloRif(LocalDate dataColloRif) {
this.dataColloRif = dataColloRif;
return this;
}
public String getSerColloRif() {
return serColloRif;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setSerColloRif(String serColloRif) {
this.serColloRif = serColloRif;
return this;
}
public String getGestioneRif() {
return gestioneRif;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setGestioneRif(String gestioneRif) {
this.gestioneRif = gestioneRif;
return this;
}
public Integer getNumColloRif() {
return numColloRif;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setNumColloRif(Integer numColloRif) {
this.numColloRif = numColloRif;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public MagazzinoBufferVersamentoMaterialeEditRequestDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public static MtbColt getMtbColt(MagazzinoBufferVersamentoMaterialeEditRequestDTO dto){
MtbColt mtbColt = new MtbColt();
mtbColt.setDataCollo(dto.getDataCollo())
.setSerCollo(dto.getSerCollo())
.setGestione(dto.getGestione())
.setNumCollo(dto.getNumCollo())
.setOperation(OperationType.SELECT_OBJECT);
return mtbColt;
}
public static MtbColt getMtbColtRif(MagazzinoBufferVersamentoMaterialeEditRequestDTO dto){
MtbColt mtbColt = new MtbColt();
mtbColt.setDataCollo(dto.getDataColloRif())
.setSerCollo(dto.getSerColloRif())
.setGestione(dto.getGestioneRif())
.setNumCollo(dto.getNumColloRif())
.setOperation(OperationType.SELECT_OBJECT);
return mtbColt;
}
}

View File

@@ -1,12 +1,16 @@
package it.integry.ems.retail.wms.generic.service;
import it.integry.ems.document.service.DocumentProdService;
import it.integry.ems.retail.wms.dto.CreateUDSRequestDTO;
import it.integry.ems.retail.wms.dto.InsertUDSRowRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeCloseRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeEditRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MagazzinoBufferVersamentoMaterialeRequestDTO;
import it.integry.ems.retail.wms.generic.dto.MvwSitArtUdcDetInventarioDTO;
import it.integry.ems.retail.wms.lavorazione.service.WMSLavorazioneService;
import it.integry.ems.rules.businessLogic.LoadColliService;
import it.integry.ems.rules.businessLogic.dto.LoadColliDTO;
import it.integry.ems.service.AziendaService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
@@ -24,15 +28,14 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class WMSMagazzinoBufferService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@@ -44,9 +47,16 @@ public class WMSMagazzinoBufferService {
@Autowired
private LoadColliService loadColliService;
@Autowired
private SetupGest setupGest;
@Autowired
private AziendaService aziendaService;
@Autowired
private DocumentProdService documentProdService;
public boolean isVersamentoStarted(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String posizione) throws Exception {
@@ -93,6 +103,7 @@ public class WMSMagazzinoBufferService {
final MtbColt startUds = wmsLavorazioneService.createUDS(new CreateUDSRequestDTO()
.setSegno(-1)
.setCodAnag(aziendaService.retrieveInternalCodAnagCliente())
.setSerCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getSerCollo())
.setNumCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getNumCollo())
.setCodMdep(mtbColtRef.getCodMdep())
@@ -154,7 +165,7 @@ public class WMSMagazzinoBufferService {
int totalNumCnf = magazzinoBufferVersamentoMaterialeRequestDTO.getNumCnfDaScaricare().intValue();
LocalDateTime startDateTime = UtilityLocalDate.localDateTimeFromDate(udsMtbColr.getDatetimeRow());
LocalDateTime endDateTime = UtilityLocalDate.getNowTime();
LocalDateTime endDateTime = UtilityLocalDate.isNull(magazzinoBufferVersamentoMaterialeRequestDTO.getOraFineVersamento(),UtilityLocalDate.getNowTime());
long totalSeconds = ChronoUnit.SECONDS.between(startDateTime, endDateTime);
long secondsPerSigleRow = totalSeconds / totalNumCnf;
@@ -195,12 +206,13 @@ public class WMSMagazzinoBufferService {
entityProcessor.processEntityList(entityList, multiDBTransactionManager, true);
LoadColliDTO loadColliDTO = new LoadColliDTO()
.setCodAnag(UtilityString.isNull(mtbColtToUpdate.getCodAnag(),aziendaService.retrieveInternalCodAnagFornitore()))
.setCodDtip(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_SCAR"))
.setCodMdep(mtbColtToUpdate.getCodMdep())
.setSaveDoc(true)
.setColli(Collections.singletonList(mtbColtToUpdate));
DtbDoct doc = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
entityProcessor.processEntity(doc,true,multiDBTransactionManager);
entityProcessor.processEntity(doc, true, multiDBTransactionManager);
}
public void cancelVersamentoMateriale(MagazzinoBufferVersamentoMaterialeRequestDTO dto, String posizione) throws Exception {
@@ -216,10 +228,100 @@ public class WMSMagazzinoBufferService {
" AND mtb_colr.gestione_rif = {}\n" +
"and mtb_colt.posizione = {}\n" +
" GROUP BY mtb_colt.num_collo, mtb_colt.gestione, mtb_colt.ser_collo, mtb_colt.data_collo, posizione, cod_jfas\n" +
"having sum(mtb_colr.qta_col) = 0\n", colloVersato.getDataCollo(),colloVersato.getSerCollo(),colloVersato.getNumCollo(),colloVersato.getGestione(),posizione);
"having sum(mtb_colr.qta_col) = 0\n", colloVersato.getDataCollo(), colloVersato.getSerCollo(), colloVersato.getNumCollo(), colloVersato.getGestione(), posizione);
MtbColt colloScarico = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(),sql,MtbColt.class);
MtbColt colloScarico = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
colloScarico.setOperation(OperationType.DELETE);
entityProcessor.processEntity(colloScarico,false,multiDBTransactionManager);
entityProcessor.processEntity(colloScarico, false, multiDBTransactionManager);
}
public void editVersamentoMateriale(List<MagazzinoBufferVersamentoMaterialeEditRequestDTO> dtoList) throws Exception {
Map<MtbColt, List<MagazzinoBufferVersamentoMaterialeEditRequestDTO>> mapScarichi = dtoList.stream().collect(Collectors.groupingBy(MagazzinoBufferVersamentoMaterialeEditRequestDTO::getMtbColtRif));
//se non è stato passato nessun versamento in input o se si cerca di modificare più di una udc invio errore
if (mapScarichi.isEmpty() || mapScarichi.keySet().size() > 1) {
throw new Exception("è possibile correggere solo uno scarico per volta!");
}
MtbColt colloRif = mapScarichi.keySet().stream().findFirst().orElse(null);
//controllo che non si cerchi di scaricare più di quello che è presente nel collo originale
checkQuantitaScaricate(colloRif, mapScarichi.get(colloRif));
for (MagazzinoBufferVersamentoMaterialeEditRequestDTO dto : mapScarichi.get(colloRif)) {
MtbColt scarico = MagazzinoBufferVersamentoMaterialeEditRequestDTO.getMtbColt(dto);
entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
if (UtilityString.isNullOrEmpty(scarico.getCodAnag())){
scarico.setCodAnag(aziendaService.retrieveInternalCodAnagFornitore());
}
//sgancio il collo dal documenti di scarico (verrà ricreato a fine procedura)
DtbDoct docScarico = documentProdService.sganciaDocumentoDaCollo(scarico);
MtbColr rows = new MtbColr();
//elimino tutte le righe
rows.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), scarico);
scarico.setPosizione(dto.getPosizione())
.setOraInizPrep(UtilityLocalDate.localDateTimeToDate(dto.getOraInizPrep()))
.setOraFinePrep(UtilityLocalDate.localDateTimeToDate(dto.getOraFinePrep()))
.setCodJfas(dto.getCodJfas());
entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
MtbColr udcMtbColr = new MtbColr();
udcMtbColr
.setGestione(colloRif.getGestione())
.setDataCollo(colloRif.getDataCollo())
.setSerCollo(colloRif.getSerCollo())
.setNumCollo(colloRif.getNumCollo())
;
wmsLavorazioneService.insertUDSRow(new InsertUDSRowRequestDTO()
.setTargetMtbColt(scarico)
.setSourceMtbColr(udcMtbColr)
.setCodMart(dto.getCodMart())
.setQtaTot(BigDecimal.ZERO)
.setNumCnf(BigDecimal.ZERO)
.setQtaCnf(dto.getQtaCnf())
.setPartitaMag(dto.getPartitaMag()));
MagazzinoBufferVersamentoMaterialeCloseRequestDTO endVersamentoRequest = new MagazzinoBufferVersamentoMaterialeCloseRequestDTO();
endVersamentoRequest
.setInputMtbColt(colloRif)
.setQtaTotDaScaricare(dto.getQtaVers())
.setNumCnfDaScaricare(dto.getNumCnfVers())
.setOraFineVersamento(dto.getOraFinePrep());
endVersamentoMateriale(endVersamentoRequest, dto.getPosizione());
}
}
private void checkQuantitaScaricate(MtbColt colloRif, List<MagazzinoBufferVersamentoMaterialeEditRequestDTO> dtoList) throws Exception {
if (dtoList.isEmpty())
throw new Exception("Impossibile verificare le quantità da scaricare!");
BigDecimal qtaScarRichiesta = dtoList.stream().map(MagazzinoBufferVersamentoMaterialeEditRequestDTO::getNumCnfVers).reduce(BigDecimal.ZERO, BigDecimal::add);
String codMart = dtoList.stream().findFirst().get().getCodMart();
String sql = Query.format("SELECT mtb_colr.cod_mart, SUM(qta_col) AS qta_col, SUM(num_cnf) AS num_cnf\n" +
"FROM mtb_colt\n" +
" INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
"WHERE mtb_colt.data_collo = {}\n" +
" AND mtb_colt.num_collo = {}\n" +
" AND mtb_colt.ser_collo = {}\n" +
" AND mtb_colt.gestione = {}\n" +
" AND mtb_colr.cod_mart = {}\n" +
"\n" +
"GROUP BY mtb_colr.cod_mart",
colloRif.getDataCollo(),
colloRif.getNumCollo(),
colloRif.getSerCollo(),
colloRif.getGestione(),
codMart
);
MvwSitArtUdcDetInventarioDTO qtaEsistente = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MvwSitArtUdcDetInventarioDTO.class);
if (qtaScarRichiesta.compareTo(qtaEsistente.getNumCnf()) > 0) {
throw new Exception("Lo scarico richiesto supera le quantità disponibili nella UL di partenza!");
}
}
}

View File

@@ -106,7 +106,6 @@ public class WMSLavorazioneService {
.setPosizione(createUDSRequestDTO.getPosizione())
.setCodJfas(createUDSRequestDTO.getCodJfas())
.setRifOrd(createUDSRequestDTO.getRifOrd())
.setCodAnag(createUDSRequestDTO.getCodAnag())
.setCodVdes(createUDSRequestDTO.getCodVdes())
.setIdLotto(createUDSRequestDTO.getIdLotto());
@@ -235,7 +234,7 @@ public class WMSLavorazioneService {
MtbColt targetMtbColt = insertUDSRowRequestDTO.getTargetMtbColt();
targetMtbColt.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(targetMtbColt, multiDBTransactionManager);
entityProcessor.processEntity(targetMtbColt,true, multiDBTransactionManager);
MtbAart mtbAart = productServices.getArticoloByCodMart(insertUDSRowRequestDTO.getCodMart());