Gestito versamento con data scad ed aggiunta partita mag prod in mes getworkorders
This commit is contained in:
@@ -2,6 +2,12 @@ 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.WtbGestSetupUser;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Migration_20250404180134 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@@ -10,15 +16,40 @@ public class Migration_20250404180134 extends BaseMigration implements Migration
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
createSetup("PVM", "MONITORAGGIO_LINEE_V2", "ENABLE_MODIFICA_SCADENZA_LOTTO", "N",
|
||||
String sql =
|
||||
"SELECT value\n" +
|
||||
"FROM stb_gest_setup\n" +
|
||||
"WHERE key_section = 'ENABLE_MODIFICA_LOTTO_SUGGERITO'";
|
||||
|
||||
String value = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(this.advancedDataSource.getConnection(), sql);
|
||||
|
||||
if (UtilityString.isNullOrEmpty(value)) {
|
||||
value = "N";
|
||||
}
|
||||
|
||||
createSetup("PVM", "MONITORAGGIO_LINEE_V2", "ENABLE_MODIFICA_SCADENZA_LOTTO", value,
|
||||
"Se abilitato permette la modifica della data di scadenza del lotto proposto in fase di assegnazione all'ordine.",
|
||||
false, "SI_NO", false, false,
|
||||
true, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
|
||||
createSetup("MES", "SETUP", "COD_MGRP_SCADENZA_MULTIPLA", null,
|
||||
"Setup per identificare i tipi di articoli della quale attivare la logica di generazione dei lotti con scadenza multipla.",
|
||||
false, "SI_NO", false, false,
|
||||
false, false, false, "mtb_grup", false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
// Sposto setup esistente a nuova
|
||||
sql =
|
||||
"SELECT user_name, gest_name, section, key_section, value\n" +
|
||||
"FROM wtb_gest_setup_user\n" +
|
||||
"WHERE key_section = 'ENABLE_MODIFICA_LOTTO_SUGGERITO'";
|
||||
|
||||
List<WtbGestSetupUser> userSetupConfig = UtilityDB.executeSimpleQueryDTO(advancedDataSource.getConnection(), sql, WtbGestSetupUser.class);
|
||||
|
||||
if (userSetupConfig != null && !userSetupConfig.isEmpty()) {
|
||||
for (WtbGestSetupUser userSetup : userSetupConfig) {
|
||||
userSetup
|
||||
.setKeySection("ENABLE_MODIFICA_SCADENZA_LOTTO");
|
||||
|
||||
userSetup.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
userSetup.manageWithParentConnection(advancedDataSource.getConnection());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.IntegryCustomerDB;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250410130507 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
createSetup("MES", "SETUP", "CONTROLLO_SCADENZA_MULTIPLA", null,
|
||||
"Se true sulle linee scelte attiva la logica di generazione dei lotti con scadenza multipla.",
|
||||
false, "SI_NO", false, false,
|
||||
false, false, false, "jtb_fasi", false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
|
||||
if (isCustomerDb(IntegryCustomerDB.RossoGargano_RossoGargano)) {
|
||||
executeStatement(
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'A1', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'A2', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'A3', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B1', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B2', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B3', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B4', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B5', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B6', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'B7', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'C1', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'C2', N'S');\n" +
|
||||
"INSERT INTO stb_gest_setup_det (gest_name, section, key_section, tipo_setup, val_col_rif, value) VALUES (N'MES', N'SETUP', N'CONTROLLO_SCADENZA_MULTIPLA', N'jtb_fasi', N'C3', N'S');"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,605 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250411123155 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 TABLE\n" +
|
||||
" AS RETURN\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" +
|
||||
"--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" +
|
||||
" WITH setup AS (SELECT ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE())) AS date_start,\n" +
|
||||
" ISNULL(@dateEnd, GETDATE()) AS date_end,\n" +
|
||||
" ISNULL(@flagEvaso, 'I') AS flag_evaso,\n" +
|
||||
" @codJfas AS cod_jfas,\n" +
|
||||
" @codAnag AS cod_anag),\n" +
|
||||
"\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" +
|
||||
"\n" +
|
||||
" setup_run_time AS (SELECT value AS flag_restart\n" +
|
||||
" FROM stb_gest_setup\n" +
|
||||
" WHERE gest_name = 'PVM'\n" +
|
||||
" AND section = 'MONITORAGGIO_LINEE_V2'\n" +
|
||||
" AND key_section = 'RESTART_RUN_TIME_END'),\n" +
|
||||
"\n" +
|
||||
" mtb_colr_sum_filtered_rows AS (SELECT gestione,\n" +
|
||||
" data_collo,\n" +
|
||||
" num_collo,\n" +
|
||||
" ser_collo,\n" +
|
||||
" cod_mart,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" qta_col,\n" +
|
||||
" num_cnf\n" +
|
||||
" FROM mtb_colr\n" +
|
||||
" WHERE gestione_rif IS NULL\n" +
|
||||
" AND data_collo_rif IS NULL\n" +
|
||||
" AND ser_collo_rif IS NULL\n" +
|
||||
" AND num_collo_rif IS NULL),\n" +
|
||||
"\n" +
|
||||
" mtb_colr_sum_valid_colli AS (SELECT DISTINCT gestione,\n" +
|
||||
" data_collo,\n" +
|
||||
" ser_collo,\n" +
|
||||
" num_collo\n" +
|
||||
" FROM mtb_colt\n" +
|
||||
" CROSS APPLY setup\n" +
|
||||
" WHERE segno = 1\n" +
|
||||
" AND data_ord BETWEEN setup.date_start AND setup.date_end),\n" +
|
||||
"\n" +
|
||||
" mtb_colr_sum AS (SELECT colr.gestione,\n" +
|
||||
" colr.data_collo,\n" +
|
||||
" colr.num_collo,\n" +
|
||||
" colr.ser_collo,\n" +
|
||||
" colr.cod_mart,\n" +
|
||||
" colr.data_ord,\n" +
|
||||
" colr.num_ord,\n" +
|
||||
" SUM(colr.qta_col) AS qta_col,\n" +
|
||||
" SUM(colr.num_cnf) AS num_cnf\n" +
|
||||
" FROM mtb_colr_sum_valid_colli colt\n" +
|
||||
" INNER JOIN mtb_colr_sum_filtered_rows colr\n" +
|
||||
" ON colr.gestione = colt.gestione\n" +
|
||||
" AND colr.data_collo = colt.data_collo\n" +
|
||||
" AND colr.num_collo = colt.num_collo\n" +
|
||||
" AND colr.ser_collo = colt.ser_collo\n" +
|
||||
" GROUP BY colr.gestione,\n" +
|
||||
" colr.data_collo,\n" +
|
||||
" colr.num_collo,\n" +
|
||||
" colr.ser_collo,\n" +
|
||||
" colr.cod_mart,\n" +
|
||||
" colr.data_ord,\n" +
|
||||
" colr.num_ord),\n" +
|
||||
"\n" +
|
||||
" machine_last_event AS (SELECT gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" cod_cmac,\n" +
|
||||
" MAX(data_mov) AS max_data_mov\n" +
|
||||
" FROM dtb_ord_macc\n" +
|
||||
" GROUP BY gestione, data_ord, num_ord, cod_cmac),\n" +
|
||||
"\n" +
|
||||
" machine_event_values AS (SELECT evento,\n" +
|
||||
" IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" +
|
||||
" FROM dtb_ord_macc_eventi),\n" +
|
||||
"\n" +
|
||||
" in_production_machines AS (SELECT dtb.gestione,\n" +
|
||||
" dtb.data_ord,\n" +
|
||||
" dtb.num_ord,\n" +
|
||||
" LAST_VALUE(dtb.data_mov) OVER (ORDER BY dtb.gestione,\n" +
|
||||
" dtb.data_ord,\n" +
|
||||
" dtb.num_ord) AS max_data_mov,\n" +
|
||||
" LAST_VALUE(ev.value) OVER (ORDER BY dtb.gestione,\n" +
|
||||
" dtb.data_ord,\n" +
|
||||
" dtb.num_ord) AS final_value\n" +
|
||||
" FROM dtb_ord_macc dtb\n" +
|
||||
" INNER JOIN machine_last_event le\n" +
|
||||
" ON dtb.data_ord = le.data_ord\n" +
|
||||
" AND dtb.num_ord = le.num_ord\n" +
|
||||
" AND dtb.gestione = le.gestione\n" +
|
||||
" AND dtb.cod_cmac = le.cod_cmac\n" +
|
||||
" AND dtb.data_mov = le.max_data_mov\n" +
|
||||
" INNER JOIN machine_event_values ev\n" +
|
||||
" ON dtb.evento = ev.evento\n" +
|
||||
" CROSS APPLY setup\n" +
|
||||
" WHERE dtb.data_ord BETWEEN setup.date_start AND setup.date_end),\n" +
|
||||
"\n" +
|
||||
" dtb_ord_with_max_step AS (SELECT gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" id_step AS id_step,\n" +
|
||||
" MAX(id_step) OVER (PARTITION BY gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" dtb_ord_steps.cod_jfas,\n" +
|
||||
" dtb_ord_steps.num_fase) AS max_id_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" +
|
||||
" dtb_ord_steps.flag_step_attivo,\n" +
|
||||
" dtb_ord_steps.data_iniz,\n" +
|
||||
" dtb_ord_steps.data_fine,\n" +
|
||||
" dtb_ord_steps.qta_lav,\n" +
|
||||
" dtb_ord_steps.qta_prod,\n" +
|
||||
" dtb_ord_steps.hr_num,\n" +
|
||||
" dtb_ord_steps.descrizione_attivita,\n" +
|
||||
" SUM(CAST(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE())) AS BIGINT))\n" +
|
||||
" OVER (PARTITION BY gestione,\n" +
|
||||
" data_ord,\n" +
|
||||
" num_ord,\n" +
|
||||
" num_fase,\n" +
|
||||
" dtb_ord_steps.cod_jfas) 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" +
|
||||
" AND gestione = 'L'),\n" +
|
||||
"\n" +
|
||||
" dtb_ord_max_step AS (SELECT DISTINCT IIF(in_production_machines.max_data_mov IS NOT NULL AND\n" +
|
||||
" (dtb_ord_with_max_step.id_step = 0 OR\n" +
|
||||
" (dtb_ord_with_max_step.id_step > 0 AND\n" +
|
||||
" dtb_ord_with_max_step.data_fine IS NOT NULL AND\n" +
|
||||
" DATEDIFF(MINUTE,\n" +
|
||||
" dtb_ord_with_max_step.data_fine,\n" +
|
||||
" in_production_machines.max_data_mov) >\n" +
|
||||
" 5)), 1, 0) AS starting_machines,\n" +
|
||||
" dtb_ord_with_max_step.*\n" +
|
||||
" FROM dtb_ord_with_max_step\n" +
|
||||
" LEFT OUTER JOIN in_production_machines\n" +
|
||||
" ON dtb_ord_with_max_step.data_ord =\n" +
|
||||
" in_production_machines.data_ord\n" +
|
||||
" AND\n" +
|
||||
" dtb_ord_with_max_step.num_ord =\n" +
|
||||
" in_production_machines.num_ord\n" +
|
||||
" AND\n" +
|
||||
" dtb_ord_with_max_step.gestione =\n" +
|
||||
" in_production_machines.gestione\n" +
|
||||
" AND in_production_machines.final_value = 1\n" +
|
||||
"\n" +
|
||||
" WHERE max_id_step = id_step),\n" +
|
||||
"\n" +
|
||||
" riga_ord_prod_w_materia_prima 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()),\n" +
|
||||
" '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 /\n" +
|
||||
" 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 /\n" +
|
||||
" 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'),\n" +
|
||||
" 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_ordr.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 mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart\n" +
|
||||
" WHERE dtb_ordr.gestione = 'A'),\n" +
|
||||
"\n" +
|
||||
" ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" +
|
||||
" riga_ord_prod_w_materia_prima.data_ord_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.num_ord_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.riga_ord_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.flag_avviabile,\n" +
|
||||
" riga_ord_prod_w_materia_prima.flag_tracciabilita,\n" +
|
||||
" riga_ord_prod_w_materia_prima.unt_ord,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord = mtb_aart.unt_mis THEN\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord = mtb_aart.unt_mis2 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord = mtb_aart.unt_mis3 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
|
||||
" END\n" +
|
||||
" END\n" +
|
||||
" AS rap_conv,\n" +
|
||||
" riga_ord_prod_w_materia_prima.unt_ord2,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv2\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord2 = mtb_aart.unt_mis THEN\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv2\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord2 = mtb_aart.unt_mis2 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord2 = mtb_aart.unt_mis3 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
|
||||
" END\n" +
|
||||
" END\n" +
|
||||
" AS rap_conv2,\n" +
|
||||
" riga_ord_prod_w_materia_prima.unt_ord3,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv3\n" +
|
||||
" ELSE CASE\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord3 = mtb_aart.unt_mis THEN\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv3\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord3 = mtb_aart.unt_mis2 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
|
||||
" WHEN riga_ord_prod_w_materia_prima.unt_ord3 = mtb_aart.unt_mis3 THEN\n" +
|
||||
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
|
||||
" riga_ord_prod_w_materia_prima.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" +
|
||||
" riga_ord_prod_w_materia_prima.num_cnf *\n" +
|
||||
" riga_ord_prod_w_materia_prima.cal_qta_cnf AS num_pezzi,\n" +
|
||||
" riga_ord_prod_w_materia_prima.num_cnf,\n" +
|
||||
" riga_ord_prod_w_materia_prima.gg_scad_partita,\n" +
|
||||
" riga_ord_prod_w_materia_prima.qta_cnf,\n" +
|
||||
" riga_ord_prod_w_materia_prima.colli_pedana,\n" +
|
||||
" riga_ord_prod_w_materia_prima.num_cnf /\n" +
|
||||
" riga_ord_prod_w_materia_prima.colli_pedana AS num_pedane,\n" +
|
||||
" riga_ord_prod_w_materia_prima.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(riga_ord_prod_w_materia_prima.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" +
|
||||
" ISNULL(mtb_partita_mag.partita_mag_prod,\n" +
|
||||
" mtb_partita_mag.partita_mag) AS partita_mag_prod,\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" +
|
||||
" dtb_ord_steps.id_step,\n" +
|
||||
" dtb_ord_steps.max_fase,\n" +
|
||||
" dtb_ord_steps.num_fase,\n" +
|
||||
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
|
||||
" (mtb_aart.qta_cnf > 1 OR riga_ord_prod_w_materia_prima.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 riga_ord_prod_w_materia_prima.colli_pedana > 1),\n" +
|
||||
" riga_ord_prod_w_materia_prima.colli_pedana, jtb_cicl.qta_prod)\n" +
|
||||
" AS qta_batch_prod,\n" +
|
||||
" IIF(mtb_aart.qta_cnf > 1 OR riga_ord_prod_w_materia_prima.colli_pedana > 1,\n" +
|
||||
" 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" +
|
||||
" dtb_ord_steps.elapsed_time,\n" +
|
||||
" SUM(ISNULL(mtb_colr_carico.qta_col, 0)) AS qta_trasferite,\n" +
|
||||
" COUNT(mtb_colr_carico.num_collo) AS udc_trasferiti,\n" +
|
||||
" COUNT(colli_lotto.num_collo) AS uds_scaricati,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN dtb_ord_steps.id_step = 0\n" +
|
||||
" THEN IIF(dtb_ord_steps.starting_machines = 1, 'IN AVVIO', 'PROGRAMMATO')\n" +
|
||||
" WHEN dtb_ord_steps.data_fine IS NULL\n" +
|
||||
" THEN 'IN CORSO'\n" +
|
||||
" ELSE 'IN PAUSA'\n" +
|
||||
" END AS stato,\n" +
|
||||
" CONVERT(INT, SUM(ISNULL(\n" +
|
||||
" mtb_colr_carico.qta_col / riga_ord_prod_w_materia_prima.calc_rap_conv,\n" +
|
||||
" 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_carico.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_carico.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_max_step 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_carico\n" +
|
||||
" ON dtb_ordt.data_ord = mtb_colr_carico.data_ord AND\n" +
|
||||
" dtb_ordt.gestione = mtb_colr_carico.gestione AND\n" +
|
||||
" dtb_ordt.num_ord = mtb_colr_carico.num_ord AND\n" +
|
||||
" dtb_ordt.cod_prod = mtb_colr_carico.cod_mart\n" +
|
||||
" LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" +
|
||||
" LEFT OUTER JOIN riga_ord_prod_w_materia_prima\n" +
|
||||
" ON riga_ord_prod_w_materia_prima.gestione_ord_prod =\n" +
|
||||
" dtb_ordt.gestione_rif AND\n" +
|
||||
" riga_ord_prod_w_materia_prima.data_ord_prod =\n" +
|
||||
" dtb_ordt.data_ord_rif AND\n" +
|
||||
" riga_ord_prod_w_materia_prima.num_ord_prod =\n" +
|
||||
" dtb_ordt.num_ord_rif AND\n" +
|
||||
" riga_ord_prod_w_materia_prima.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 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" +
|
||||
" LEFT OUTER JOIN mtb_colt colli_lotto ON jlt.id_lotto = colli_lotto.id_lotto\n" +
|
||||
"\n" +
|
||||
" CROSS APPLY setup\n" +
|
||||
" WHERE dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND dtb_ord_steps.data_ord BETWEEN setup.date_start AND setup.date_end\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_ordt.cod_jfas = setup.cod_jfas)\n" +
|
||||
" AND (setup.cod_anag IS NULL\n" +
|
||||
" OR dtb_ordt.cod_anag = setup.cod_anag)\n" +
|
||||
" GROUP BY riga_ord_prod_w_materia_prima.data_ord_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.num_ord_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.riga_ord_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.flag_avviabile,\n" +
|
||||
" riga_ord_prod_w_materia_prima.flag_tracciabilita,\n" +
|
||||
" riga_ord_prod_w_materia_prima.unt_ord,\n" +
|
||||
" mtb_partita_mag.rap_conv2,\n" +
|
||||
" mtb_partita_mag.rap_conv3,\n" +
|
||||
" dtb_ordt.note,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv,\n" +
|
||||
" dtb_ordt.descrizione_prod,\n" +
|
||||
" dtb_ordt.descr_estesa_prod,\n" +
|
||||
" riga_ord_prod_w_materia_prima.num_cnf,\n" +
|
||||
" mtb_aart.qta_cnf,\n" +
|
||||
" mtb_aart.gg_scad_partita,\n" +
|
||||
" mtb_aart.flag_qta_cnf_fissa,\n" +
|
||||
" riga_ord_prod_w_materia_prima.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.partita_mag_prod,\n" +
|
||||
" mtb_partita_mag.data_scad,\n" +
|
||||
" dtb_ordt.cod_prod,\n" +
|
||||
" dtb_ordt.data_iniz_prod,\n" +
|
||||
" dtb_ord_steps.id_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" +
|
||||
" riga_ord_prod_w_materia_prima.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" +
|
||||
" dtb_ord_steps.elapsed_time,\n" +
|
||||
" riga_ord_prod_w_materia_prima.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" +
|
||||
" riga_ord_prod_w_materia_prima.unt_ord2,\n" +
|
||||
" riga_ord_prod_w_materia_prima.unt_ord3,\n" +
|
||||
" riga_ord_prod_w_materia_prima.qta_ord,\n" +
|
||||
" riga_ord_prod_w_materia_prima.qta_ord2,\n" +
|
||||
" riga_ord_prod_w_materia_prima.qta_ord3,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv2,\n" +
|
||||
" riga_ord_prod_w_materia_prima.rap_conv3,\n" +
|
||||
" riga_ord_prod_w_materia_prima.qta_cnf,\n" +
|
||||
" riga_ord_prod_w_materia_prima.cal_qta_cnf,\n" +
|
||||
" riga_ord_prod_w_materia_prima.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" +
|
||||
" dtb_ord_steps.num_fase, dtb_ord_steps.qta_lav,\n" +
|
||||
" jl.id_lotto, jlt.data_lotto, mtb_aart.peso_kg, dtb_ordt.data_cons_prod_max,\n" +
|
||||
" dtb_ord_steps.id_step,\n" +
|
||||
" dtb_ord_steps.max_fase,\n" +
|
||||
" dtb_ord_steps.starting_machines)\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" +
|
||||
" partita_mag_prod,\n" +
|
||||
" note_lav,\n" +
|
||||
" data_scad,\n" +
|
||||
" cod_prod,\n" +
|
||||
" descrizione_commessa,\n" +
|
||||
" data_iniz_prod,\n" +
|
||||
" id_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" +
|
||||
" uds_scaricati,\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() AND (data_iniz IS NULL OR data_fine IS NOT NULL))\n" +
|
||||
" 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" +
|
||||
" CROSS APPLY setup_run_time");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,8 @@ public class InsertPartitaMagRequestDTO {
|
||||
|
||||
private String partitaMag;
|
||||
|
||||
private String partitaMagProd;
|
||||
|
||||
private Date dataScad;
|
||||
|
||||
private String codJfas;
|
||||
@@ -37,6 +39,15 @@ public class InsertPartitaMagRequestDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMagProd() {
|
||||
return partitaMagProd;
|
||||
}
|
||||
|
||||
public InsertPartitaMagRequestDTO setPartitaMagProd(String partitaMagProd) {
|
||||
this.partitaMagProd = partitaMagProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
@@ -152,6 +152,11 @@ public class OrdineLavorazioneDTO {
|
||||
@JsonSerialize
|
||||
private String partitaMag;
|
||||
|
||||
@SqlField(value = "partita_mag_prod")
|
||||
@JsonProperty("partitaMagProd")
|
||||
@JsonSerialize
|
||||
private String partitaMagProd;
|
||||
|
||||
@SqlField(value = "data_scad")
|
||||
@JsonProperty("dataScad")
|
||||
@JsonSerialize(using = JsonDateAdapterSerializer.class)
|
||||
@@ -639,6 +644,15 @@ public class OrdineLavorazioneDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMagProd() {
|
||||
return partitaMagProd;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneDTO setPartitaMagProd(String partitaMagProd) {
|
||||
this.partitaMagProd = partitaMagProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import it.integry.ems_model.utility.BarcodeEan128.Ean128Model;
|
||||
import it.integry.ems_model.utility.BarcodeEan128.UtilityBarcodeEan128;
|
||||
import it.integry.ems_model.utility.*;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -1335,14 +1336,31 @@ public class MesProductionServiceV2 {
|
||||
|
||||
|
||||
DtbOrdt ordineLav = completeDatiOrdine(dto.getOrdine());
|
||||
|
||||
MtbPartitaMag partitaMagOrdine = null;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ordineLav.getPartitaMag())) {
|
||||
partitaMagOrdine = new MtbPartitaMag();
|
||||
|
||||
partitaMagOrdine.setCodMart(ordineLav.getCodProd())
|
||||
.setPartitaMag(ordineLav.getPartitaMag())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
|
||||
entityProcessor.processEntity(partitaMagOrdine, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
String codMgrpSL = setupGest.getSetup("w_lpianoprod_rc", "SETUP", "GRUPPO_SL");
|
||||
boolean matchLottoSlToOrdine = setupGest.getSetupDetBoolean("MES", "SETUP", "VINCOLA_LOTTO_ORDINE_A_SL", dto.getCodJfas());
|
||||
|
||||
List<MtbAart> arts = rows.stream().map(MtbColr::getCodMart).map(MtbAart::fromCodMart).distinct().collect(java.util.stream.Collectors.toList());
|
||||
|
||||
if (arts.size() > 1)
|
||||
throw new Exception("Impossibile versare a produzione una pedana mista!");
|
||||
|
||||
final MtbAart rowArt = entityProcessor.processEntity(arts.get(0), true, multiDBTransactionManager);
|
||||
|
||||
GiacenzaArtInBarcodeDTO invDto = new GiacenzaArtInBarcodeDTO();
|
||||
|
||||
invDto
|
||||
.setBarcodeUl(dto.getBarcode())
|
||||
.setCodMart(rowArt.getCodMart())
|
||||
@@ -1355,6 +1373,7 @@ public class MesProductionServiceV2 {
|
||||
.setNumCnf(BigDecimal.ZERO);
|
||||
|
||||
entityProcessor.processEntityList(arts, true);
|
||||
|
||||
for (MtbColr row : rows) {
|
||||
DtbOrdr rowOrdine = ordineLav.getDtbOrdr().stream().filter(ordRow -> ordRow.getCodMart().equalsIgnoreCase(rowArt.getCodMart())).findFirst().orElse(null);
|
||||
if (rowOrdine == null) {
|
||||
@@ -1363,11 +1382,33 @@ public class MesProductionServiceV2 {
|
||||
// continue;
|
||||
}
|
||||
|
||||
if (rowArt.getCodMgrp().equalsIgnoreCase(codMgrpSL) &&
|
||||
matchLottoSlToOrdine &&
|
||||
!UtilityString.isNullOrEmpty(ordineLav.getPartitaMag()) &&
|
||||
!ordineLav.getPartitaMag().startsWith(row.getPartitaMag())) {
|
||||
response.getAnomalie().add(AnomalieDTO.warning(String.format("La partita di semilavorato che si vuole versare (%s) non corrisponde a quella dell'ordine (%s), per concludere la procedura di versamento verrà creato un nuovo ordine di lavorazione con la partita selezionata!", row.getPartitaMag(), ordineLav.getPartitaMag())));
|
||||
MtbPartitaMag partitaMagRow = new MtbPartitaMag();
|
||||
|
||||
partitaMagRow
|
||||
.setCodMart(row.getCodMart())
|
||||
.setPartitaMag(row.getPartitaMag())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
|
||||
entityProcessor.processEntity(partitaMagRow, true, multiDBTransactionManager);
|
||||
|
||||
if (rowArt.getCodMgrp().equalsIgnoreCase(codMgrpSL)
|
||||
&& matchLottoSlToOrdine
|
||||
&& !UtilityString.isNullOrEmpty(ordineLav.getPartitaMag())
|
||||
&& (!partitaMagRow.getPartitaMagProd().equalsIgnoreCase(partitaMagOrdine.getPartitaMagProd())
|
||||
|| !DateUtils.isSameDay(partitaMagRow.getDataScad(), partitaMagOrdine.getDataScad()))) {
|
||||
if (!partitaMagRow.getPartitaMagProd().equalsIgnoreCase(partitaMagOrdine.getPartitaMagProd())) {
|
||||
response.getAnomalie().add(AnomalieDTO.warning(String.format(
|
||||
"Lotto di produzione (%s) diverso da quello in lavorazione (%s).\nVuoi creare un nuovo ordine?",
|
||||
partitaMagRow.getPartitaMag(),
|
||||
partitaMagOrdine.getPartitaMagProd())));
|
||||
} else {
|
||||
response.getAnomalie().add(AnomalieDTO.warning(String.format(
|
||||
"La data di scadenza del lotto versato (%s) è diversa da quella del lotto di lavorazione (%s).\nVuoi creare un nuovo ordine?",
|
||||
UtilityDate.formatDate(partitaMagRow.getDataScad(), CommonConstants.DATE_FORMAT_DMY),
|
||||
UtilityDate.formatDate(partitaMagOrdine.getDataScad(), CommonConstants.DATE_FORMAT_DMY)
|
||||
)));
|
||||
}
|
||||
|
||||
response.setNewOrderRequired(true);
|
||||
}
|
||||
invDto.setPartitaMag(row.getPartitaMag())
|
||||
@@ -1441,134 +1482,181 @@ public class MesProductionServiceV2 {
|
||||
}
|
||||
|
||||
public Object versaMaterialeSuOrdine(VersamentoMaterialeSuOrdineDTO dto) throws Exception {
|
||||
|
||||
|
||||
MtbColt colloDaVersare = pvmService.getColloByBarcode(dto.getMtbColt().getBarcodeUl(), true);
|
||||
colloDaVersare.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(colloDaVersare, multiDBTransactionManager);
|
||||
List<MvwSitArtUdcDetInventarioDTO> contenuto = wmsGenericService.getGiacenzaCollo(colloDaVersare);
|
||||
|
||||
if (UtilityList.isNullOrEmpty(contenuto)) {
|
||||
throw new Exception("La UL seleionata non contiene alcun articolo da versare!");
|
||||
throw new Exception("La UL selezionata non contiene alcun articolo da versare!");
|
||||
}
|
||||
|
||||
DtbOrdt ordine = dto.getOrdine();
|
||||
ordine.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordine, multiDBTransactionManager);
|
||||
|
||||
if (dto.isCloneOrdine()) {
|
||||
|
||||
String sql = Query.format("SELECT dtb_ordr.* from dtb_ordr\n" +
|
||||
" inner join dtb_ordt on dtb_ordr.data_ord = dtb_ordt.data_ord_rif and dtb_ordr.gestione = gestione_rif and dtb_ordr.num_ord = num_ord_rif\n" +
|
||||
" where dtb_ordt.gestione = {} and dtb_ordt.data_ord = {} and dtb_ordt.num_ord = {} and dtb_ordr.cod_mart = {}", ordine.getGestione(), ordine.getDataOrd(), ordine.getNumOrd(), ordine.getCodProd());
|
||||
DtbOrdr oldRow = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
|
||||
|
||||
CreaOrdineProdDTO newOrdDTO = new CreaOrdineProdDTO();
|
||||
newOrdDTO.setCodAnag(ordine.getCodAnag())
|
||||
.setDataOrd(LocalDate.now())
|
||||
.setUntOrd(oldRow.getUntOrd())
|
||||
.setCodMart(oldRow.getCodMart())
|
||||
.setCodMdep(ordine.getCodMdep())
|
||||
.setNumCnf(oldRow.getNumCnf())
|
||||
.setQtaOrd(ordine.getQtaProd())
|
||||
.setCodJfas(ordine.getCodJfas())
|
||||
.setColliPedana(oldRow.getColliPedana());
|
||||
ordine = productionService.saveOrdineProd(newOrdDTO);
|
||||
ordine.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordine, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
List<CreateUDSRequestOrderDTO> ordini = new ArrayList<>();
|
||||
MaterialeVersatoSuOrdineDTO versamentoEsistente = getVersamentoBarcodeSuOrdine(dto.getOrdine(), colloDaVersare.getBarcodeUl());
|
||||
MtbColt uds;
|
||||
if (versamentoEsistente == null) {
|
||||
CreateUDSRequestOrderDTO orderDTO = new CreateUDSRequestOrderDTO()
|
||||
.setNumOrd(ordine.getNumOrd())
|
||||
.setDataOrd(ordine.getDataOrd().toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate())
|
||||
.setGestione(ordine.getGestione());
|
||||
ordini.add(orderDTO);
|
||||
CreateUDSRequestDTO requestDTO = new CreateUDSRequestDTO()
|
||||
.setCodMdep(ordine.getCodMdep())
|
||||
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
|
||||
.setSegno(-1)
|
||||
.setOrders(ordini);
|
||||
uds = wmsLavorazioneService.createUDS(requestDTO);
|
||||
|
||||
} else {
|
||||
uds = new MtbColt(versamentoEsistente.getGestione(), versamentoEsistente.getDataCollo(), versamentoEsistente.getNumCollo(), versamentoEsistente.getSerCollo());
|
||||
}
|
||||
try {
|
||||
if (dto.isCloneOrdine()) {
|
||||
String sql = Query.format("SELECT dtb_ordr.* from dtb_ordr\n" +
|
||||
" inner join dtb_ordt on dtb_ordr.data_ord = dtb_ordt.data_ord_rif and dtb_ordr.gestione = gestione_rif and dtb_ordr.num_ord = num_ord_rif\n" +
|
||||
" where dtb_ordt.gestione = {} and dtb_ordt.data_ord = {} and dtb_ordt.num_ord = {} and dtb_ordr.cod_mart = {}", ordine.getGestione(), ordine.getDataOrd(), ordine.getNumOrd(), ordine.getCodProd());
|
||||
DtbOrdr oldRow = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
|
||||
|
||||
for (MvwSitArtUdcDetInventarioDTO scarico : contenuto) {
|
||||
String sql = "SELECT riga_ord\n" +
|
||||
"from dtb_ordr\n" +
|
||||
"where data_ord = " + UtilityDB.valueToString(ordine.getDataOrd()) + "\n" +
|
||||
" and num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + "\n" +
|
||||
" and gestione = " + UtilityDB.valueToString(ordine.getGestione()) + "\n" +
|
||||
" and cod_mart = " + UtilityDB.valueToString(scarico.getCodMart());
|
||||
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
CreaOrdineProdDTO newOrdDTO = new CreaOrdineProdDTO();
|
||||
newOrdDTO.setCodAnag(ordine.getCodAnag())
|
||||
.setDataOrd(LocalDate.now())
|
||||
.setUntOrd(oldRow.getUntOrd())
|
||||
.setCodMart(oldRow.getCodMart())
|
||||
.setCodMdep(ordine.getCodMdep())
|
||||
.setNumCnf(oldRow.getNumCnf())
|
||||
.setQtaOrd(ordine.getQtaProd())
|
||||
.setCodJfas(ordine.getCodJfas())
|
||||
.setColliPedana(oldRow.getColliPedana());
|
||||
|
||||
ordine = productionService.saveOrdineProd(newOrdDTO);
|
||||
|
||||
MtbColr sourceMtbColr = new MtbColr();
|
||||
sourceMtbColr
|
||||
.setNumCollo(scarico.getNumCollo())
|
||||
.setSerCollo(scarico.getSerCollo())
|
||||
.setDataCollo(scarico.getDataCollo())
|
||||
.setGestione(scarico.getGestione())
|
||||
.setCodMart(scarico.getCodMart())
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setPesoLordoKg(scarico.getPesoLordoKG())
|
||||
.setPesoNettoKg(scarico.getPesoNettoKG());
|
||||
ordine.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordine, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
InsertUDSRowRequestDTO insertRequestDto = new InsertUDSRowRequestDTO()
|
||||
.setCodMart(scarico.getCodMart())
|
||||
.setQtaTot(UtilityBigDecimal.isNull(dto.getQtaVersamento(), scarico.getQtaCol()))
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setSourceMtbColr(sourceMtbColr)
|
||||
.setTargetMtbColt(uds)
|
||||
.setQtaCnf(scarico.getQtaCnf())
|
||||
.setDataOrd(ordine.getDataOrd())
|
||||
.setRigaOrd(rigaOrd)
|
||||
.setNumOrd(ordine.getNumOrd());
|
||||
wmsLavorazioneService.insertUDSRow(insertRequestDto);
|
||||
List<CreateUDSRequestOrderDTO> ordini = new ArrayList<>();
|
||||
|
||||
String codMgrpSL = setupGest.getSetup("w_lpianoprod_rc", "SETUP", "GRUPPO_SL");
|
||||
boolean matchLottoSlToOrdine = setupGest.getSetupDetBoolean("MES", "SETUP", "VINCOLA_LOTTO_ORDINE_A_SL", dto.getCodJfas());
|
||||
MaterialeVersatoSuOrdineDTO versamentoEsistente = getVersamentoBarcodeSuOrdine(dto.getOrdine(), colloDaVersare.getBarcodeUl());
|
||||
|
||||
if (versamentoEsistente == null) {
|
||||
CreateUDSRequestOrderDTO orderDTO = new CreateUDSRequestOrderDTO()
|
||||
.setNumOrd(ordine.getNumOrd())
|
||||
.setDataOrd(ordine.getDataOrd().toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate())
|
||||
.setGestione(ordine.getGestione());
|
||||
|
||||
ordini.add(orderDTO);
|
||||
|
||||
CreateUDSRequestDTO requestDTO = new CreateUDSRequestDTO()
|
||||
.setCodMdep(ordine.getCodMdep())
|
||||
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
|
||||
.setSegno(-1)
|
||||
.setOrders(ordini);
|
||||
|
||||
uds = wmsLavorazioneService.createUDS(requestDTO);
|
||||
} else {
|
||||
uds = new MtbColt(versamentoEsistente.getGestione(), versamentoEsistente.getDataCollo(), versamentoEsistente.getNumCollo(), versamentoEsistente.getSerCollo());
|
||||
}
|
||||
|
||||
for (MvwSitArtUdcDetInventarioDTO scarico : contenuto) {
|
||||
String sql = "SELECT riga_ord\n" +
|
||||
"from dtb_ordr\n" +
|
||||
"where data_ord = " + UtilityDB.valueToString(ordine.getDataOrd()) + "\n" +
|
||||
" and num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + "\n" +
|
||||
" and gestione = " + UtilityDB.valueToString(ordine.getGestione()) + "\n" +
|
||||
" and cod_mart = " + UtilityDB.valueToString(scarico.getCodMart());
|
||||
Integer rigaOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
MtbColr sourceMtbColr = new MtbColr();
|
||||
|
||||
sourceMtbColr
|
||||
.setNumCollo(scarico.getNumCollo())
|
||||
.setSerCollo(scarico.getSerCollo())
|
||||
.setDataCollo(scarico.getDataCollo())
|
||||
.setGestione(scarico.getGestione())
|
||||
.setCodMart(scarico.getCodMart())
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setPesoLordoKg(scarico.getPesoLordoKG())
|
||||
.setPesoNettoKg(scarico.getPesoNettoKG());
|
||||
|
||||
InsertUDSRowRequestDTO insertRequestDto = new InsertUDSRowRequestDTO()
|
||||
.setCodMart(scarico.getCodMart())
|
||||
.setQtaTot(UtilityBigDecimal.isNull(dto.getQtaVersamento(), scarico.getQtaCol()))
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setSourceMtbColr(sourceMtbColr)
|
||||
.setTargetMtbColt(uds)
|
||||
.setQtaCnf(scarico.getQtaCnf())
|
||||
.setDataOrd(ordine.getDataOrd())
|
||||
.setRigaOrd(rigaOrd)
|
||||
.setNumOrd(ordine.getNumOrd());
|
||||
wmsLavorazioneService.insertUDSRow(insertRequestDto);
|
||||
|
||||
String codMgrpSL = setupGest.getSetup("w_lpianoprod_rc", "SETUP", "GRUPPO_SL");
|
||||
boolean matchLottoSlToOrdine = setupGest.getSetupDetBoolean("MES", "SETUP", "VINCOLA_LOTTO_ORDINE_A_SL", dto.getCodJfas());
|
||||
|
||||
if (UtilityString.isNullOrEmpty(ordine.getPartitaMag()) && scarico.getCodGruppo().equalsIgnoreCase(codMgrpSL) && matchLottoSlToOrdine) {
|
||||
MtbPartitaMag partitaSL = new MtbPartitaMag();
|
||||
|
||||
partitaSL.setCodMart(scarico.getCodMart())
|
||||
.setPartitaMag(scarico.getPartitaMag())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(partitaSL, multiDBTransactionManager);
|
||||
|
||||
entityProcessor.processEntity(partitaSL, true, multiDBTransactionManager);
|
||||
|
||||
String partitaMagPf = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), Query.format("with datiPartita as (\n" +
|
||||
" select MAX(ASCII(right(partita_mag,LEN(partita_mag) - LEN({})))) + 1 as nextProgressivo\n" +
|
||||
" from mtb_partita_mag where cod_mart = {} and partita_mag like {}\n" +
|
||||
")\n" +
|
||||
"select concat({},ISNULL(CHAR(nextProgressivo),'A'))\n" +
|
||||
"from datiPartita", partitaSL.getPartitaMag(), ordine.getCodProd(), partitaSL.getPartitaMag() + "%", partitaSL.getPartitaMag()));
|
||||
partitaMagPf = UtilityString.isNull(partitaMagPf, partitaSL.getPartitaMag());
|
||||
MtbPartitaMag partitaPf = new MtbPartitaMag();
|
||||
partitaPf.setCodMart(ordine.getCodProd())
|
||||
.setPartitaMag(partitaMagPf)
|
||||
.setDataScad(partitaSL.getDataScad())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
entityProcessor.processEntity(partitaPf, true, multiDBTransactionManager);
|
||||
ordine.setPartitaMag(partitaMagPf)
|
||||
.setOperation(OperationType.UPDATE);
|
||||
MtbPartitaMag partitaOrdine = null;
|
||||
|
||||
entityProcessor.processEntity(ordine, true, multiDBTransactionManager);
|
||||
// Controllo se esiste partita con stesso lotto e scadenza
|
||||
if (!UtilityString.isNullOrEmpty(ordine.getPartitaMag())) {
|
||||
partitaOrdine = new MtbPartitaMag();
|
||||
|
||||
partitaOrdine
|
||||
.setCodMart(ordine.getCodProd())
|
||||
.setPartitaMag(ordine.getPartitaMag())
|
||||
.setOperation(OperationType.SELECT_OBJECT);
|
||||
|
||||
entityProcessor.processEntity(partitaOrdine, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
// Assegna una nuova partita se l'ordine non ha nessuna partita o se il semilavorato ha diversa partitaMagProd o data scadenza
|
||||
if (matchLottoSlToOrdine
|
||||
&& scarico.getCodGruppo().equalsIgnoreCase(codMgrpSL)
|
||||
&& (UtilityString.isNullOrEmpty(ordine.getPartitaMag())
|
||||
|| !partitaOrdine.getPartitaMagProd().equalsIgnoreCase(partitaSL.getPartitaMagProd())
|
||||
|| !DateUtils.isSameDay(partitaOrdine.getDataScad(), partitaSL.getDataScad()))) {
|
||||
sql = Query.format(
|
||||
"WITH datiPartita\n" +
|
||||
" AS (SELECT MAX(ASCII(RIGHT(partita_mag, LEN(partita_mag) - LEN(%s)))) + 1 AS nextProgressivo\n" +
|
||||
" FROM mtb_partita_mag\n" +
|
||||
" WHERE cod_mart = %s\n" +
|
||||
" AND partita_mag_prod = %s)\n" +
|
||||
"SELECT CONCAT(%s, ISNULL(CHAR(nextProgressivo), 'A'))\n" +
|
||||
"FROM datiPartita",
|
||||
partitaSL.getPartitaMagProd(),
|
||||
ordine.getCodProd(),
|
||||
partitaSL.getPartitaMagProd(),
|
||||
partitaSL.getPartitaMagProd()
|
||||
);
|
||||
|
||||
String partitaMagPf = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
partitaMagPf = UtilityString.isNull(partitaMagPf, partitaSL.getPartitaMagProd());
|
||||
|
||||
MtbPartitaMag partitaPf = new MtbPartitaMag();
|
||||
|
||||
partitaPf
|
||||
.setCodMart(ordine.getCodProd())
|
||||
.setPartitaMag(partitaMagPf)
|
||||
.setPartitaMagProd(partitaSL.getPartitaMagProd())
|
||||
.setDataProd(partitaSL.getDataProd())
|
||||
.setDataScad(partitaSL.getDataScad())
|
||||
.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
|
||||
entityProcessor.processEntity(partitaPf, true, multiDBTransactionManager);
|
||||
|
||||
ordine.setPartitaMag(partitaMagPf)
|
||||
.setOperation(OperationType.UPDATE);
|
||||
|
||||
entityProcessor.processEntity(ordine, true, multiDBTransactionManager);
|
||||
}
|
||||
}
|
||||
|
||||
if (dto.isStartOrdine() || dto.isCloneOrdine()) {
|
||||
openStep(ordine.getDataOrd(), ordine.getNumOrd(), ordine.getGestione(), dto.getCodJfas(), 0, null, null, null, true);
|
||||
}
|
||||
|
||||
multiDBTransactionManager.commitAll();
|
||||
} catch (Exception e) {
|
||||
multiDBTransactionManager.rollbackAll();
|
||||
throw e;
|
||||
}
|
||||
|
||||
|
||||
if (dto.isStartOrdine() || dto.isCloneOrdine()) {
|
||||
openStep(ordine.getDataOrd(), ordine.getNumOrd(), ordine.getGestione(), dto.getCodJfas(), 0);
|
||||
}
|
||||
return uds;
|
||||
}
|
||||
|
||||
|
||||
@@ -1045,7 +1045,7 @@ public class ProductionService {
|
||||
}
|
||||
}
|
||||
|
||||
entityProcessor.processEntity(ordLav, multiDBTransactionManager);
|
||||
entityProcessor.processEntity(ordLav, true, multiDBTransactionManager);
|
||||
UtilityEntity.throwEntityException(ordLav);
|
||||
}
|
||||
}
|
||||
@@ -1617,15 +1617,15 @@ public class ProductionService {
|
||||
}
|
||||
}
|
||||
|
||||
public StbGestSetupDet getConfigCodMgrpScadenzaMultipla(String codMgrp) throws Exception {
|
||||
List<StbGestSetupDet> setupDetList = setupGest.getSetupDetList("MES", "SETUP", "COD_MGRP_SCADENZA_MULTIPLA");
|
||||
public StbGestSetupDet getConfigControlloScadenzaMultipla(String codJfas) throws Exception {
|
||||
List<StbGestSetupDet> setupDetList = setupGest.getSetupDetList("MES", "SETUP", "CONTROLLO_SCADENZA_MULTIPLA");
|
||||
|
||||
if (setupDetList == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
java.util.Optional<StbGestSetupDet> stbGestSetupDetOptional = setupDetList.stream()
|
||||
.filter(stbGestSetupDet -> stbGestSetupDet.getValColRif().equalsIgnoreCase(codMgrp))
|
||||
.filter(stbGestSetupDet -> stbGestSetupDet.getValColRif().equalsIgnoreCase(codJfas))
|
||||
.findFirst();
|
||||
|
||||
return stbGestSetupDetOptional.orElse(null);
|
||||
@@ -1634,39 +1634,29 @@ public class ProductionService {
|
||||
public List<EntityBase> insertPartitaMag(InsertPartitaMagRequestDTO dto, boolean saveEntity) throws Exception {
|
||||
String codMart = dto.getCodMart();
|
||||
String partitaMag = dto.getPartitaMag();
|
||||
String partitaMagProd = partitaMag;
|
||||
String partitaMagProd = UtilityString.isNull(dto.getPartitaMagProd(), partitaMag);
|
||||
Date dataScad = dto.getDataScad();
|
||||
|
||||
String sql = Query.format(
|
||||
"SELECT mg.cod_mgrp\n" +
|
||||
"FROM mtb_grup mg\n" +
|
||||
"INNER JOIN mtb_aart ma ON mg.cod_mgrp = ma.cod_mgrp\n" +
|
||||
"WHERE ma.cod_mart = %s",
|
||||
dto.getCodMart()
|
||||
);
|
||||
StbGestSetupDet configControlloScadenzaMultipla = this.getConfigControlloScadenzaMultipla(dto.getCodJfas());
|
||||
|
||||
String codMgrp = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
StbGestSetupDet configCodMgrpScadenzaMultipla = this.getConfigCodMgrpScadenzaMultipla(codMgrp);
|
||||
|
||||
if (configCodMgrpScadenzaMultipla != null && configCodMgrpScadenzaMultipla.getValue().equalsIgnoreCase("S")) {
|
||||
// Controllo se esiste articolo con stesso lotto e scadenze
|
||||
sql = Query.format(
|
||||
"SELECT partita_mag\n" +
|
||||
"FROM mtb_partita_mag\n" +
|
||||
"WHERE cod_mart = %s\n" +
|
||||
"AND partita_mag_prod = %s\n" +
|
||||
"AND data_scad = %s\n",
|
||||
codMart,
|
||||
partitaMag,
|
||||
dataScad
|
||||
);
|
||||
|
||||
String partitaMagQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
if (partitaMagQuery == null) {
|
||||
if (configControlloScadenzaMultipla != null && configControlloScadenzaMultipla.getValue().equalsIgnoreCase("S")) {
|
||||
// Controllo se esiste partita con stesso lotto e scadenza
|
||||
// sql = Query.format(
|
||||
// "SELECT partita_mag\n" +
|
||||
// "FROM mtb_partita_mag\n" +
|
||||
// "WHERE cod_mart = %s\n" +
|
||||
// "AND partita_mag_prod = %s\n" +
|
||||
// "AND data_scad = %s\n",
|
||||
// codMart,
|
||||
// partitaMag,
|
||||
// dataScad
|
||||
// );
|
||||
//
|
||||
// String partitaMagQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
//
|
||||
// if (partitaMagQuery == null) {
|
||||
// La partita per data scad non esiste, leggere l'ultima e creane una nuova
|
||||
sql = Query.format(
|
||||
String sql = Query.format(
|
||||
"SELECT MAX(partita_mag)\n" +
|
||||
"FROM mtb_partita_mag\n" +
|
||||
"WHERE cod_mart = %s\n" +
|
||||
@@ -1688,9 +1678,9 @@ public class ProductionService {
|
||||
|
||||
partitaMag += lastPartitaChar;
|
||||
}
|
||||
} else {
|
||||
partitaMag = partitaMagQuery;
|
||||
}
|
||||
// } else {
|
||||
// partitaMag = partitaMagQuery;
|
||||
// }
|
||||
}
|
||||
|
||||
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
|
||||
|
||||
Reference in New Issue
Block a user