Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2024-09-18 12:46:28 +02:00
38 changed files with 2304 additions and 280 deletions

View File

@@ -24,7 +24,8 @@ public enum EntityImportType {
SCONTRINI("SCONTRINI"),
MOVIMENTI_CONTABILI("MOVIMENTI CONTABILI"),
GRIGLIA_VENDITA("GRIGLIA VENDITA"),
GRIGLIA_ACQUISTO("GRIGLIA ACQUISTO");
GRIGLIA_ACQUISTO("GRIGLIA ACQUISTO"),
SCADENZE("SCADENZE");
private String text;

View File

@@ -17,7 +17,8 @@ public enum EntityExportType {
RAPPORTINI("RAPPORTINI"),
VARIAZIONE_PV("VARIAZIONE PV"),
LISTINI_ACQUISTO("LISTINI ACQUISTO"),
COLLI("COLLI");
COLLI("COLLI"),
SCADENZE("SCADENZE");
private String text;

View File

@@ -0,0 +1,97 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.AtbForn;
import it.integry.ems_model.entity.MtbAart;
import it.integry.ems_model.entity.VtbClie;
import it.integry.ems_model.entity.WtbUsers;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
public class Migration_20240828094457 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String val = null;
if (isCustomer(IntegryCustomer.Tosca)) {
val = "01";
}
createSetup("EDGE_CONN", "SETUP", "COD_ATIP_MP", val, "Codice tipo fornitore materia prima (cassette tbw)", "COD_ATIP");
if (!isCustomer(IntegryCustomer.Tosca))
return;
String sql = "SELECT * from vtb_clie";
List<VtbClie> listaClienti = UtilityDB.executeSimpleQueryDTO(advancedDataSource.getConnection(), sql, VtbClie.class);
if (listaClienti.isEmpty())
return;
for (VtbClie clie : listaClienti) {
AtbForn forn = new AtbForn();
forn
.setCodAnag(clie.getCodAnag())
.setCodAtip(val)
.setOperation(OperationType.INSERT);
clie
.setOperation(OperationType.DELETE);
forn.manageWithParentConnection(advancedDataSource.getConnection(), droolsDataCompleting);
clie.manageWithParentConnection(advancedDataSource.getConnection(), droolsDataCompleting);
}
List<String> queryDiacod = new ArrayList<>();
//WOOD
queryDiacod.add("UPDATE mtb_aart SET diacod = N'934' WHERE cod_mart = N'RPC416AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'935' WHERE cod_mart = N'RPC416WW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'937' WHERE cod_mart = N'RPC4311SW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'942' WHERE cod_mart = N'RPC611AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'943' WHERE cod_mart = N'RPC613AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'944' WHERE cod_mart = N'RPC616AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'946' WHERE cod_mart = N'RPC619AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'947' WHERE cod_mart = N'RPC622AW'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'948' WHERE cod_mart = N'RPC623AW'");
//GREEN
queryDiacod.add("UPDATE mtb_aart SET diacod = N'936' WHERE cod_mart = N'RPC4311'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'939' WHERE cod_mart = N'RPC4317'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'950' WHERE cod_mart = N'RPC6411'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'952' WHERE cod_mart = N'RPC6416'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'955' WHERE cod_mart = N'RPC6419'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'958' WHERE cod_mart = N'RPC6423'");
//MEAT
queryDiacod.add("UPDATE mtb_aart SET diacod = N'1501' WHERE cod_mart = N'RPC4317M'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'1850' WHERE cod_mart = N'RPC6411M'");
queryDiacod.add("UPDATE mtb_aart SET diacod = N'957' WHERE cod_mart = N'RPC6419M'");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00048931',N'CE',NULL, N'01', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00063682',N'RM',NULL, N'02', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00053786',N'MI',NULL, N'03', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00060042',N'RG',NULL, N'04', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00055852',N'VR',NULL, N'05', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00069093',N'BA',NULL, N'06', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00069743',N'CZ',NULL, N'07', null);");
queryDiacod.add("INSERT INTO mtb_depo_intercode (cod_forn, intercode, cod_mdep, user_name, cod_vdes, email_ordine) VALUES (N'F0000', N'ACC-00063683',N'FC',NULL, N'08', null);");
for (String updateDiacodSql : queryDiacod) {
PreparedStatement updateDefaultFlagPS = advancedDataSource.getConnection().prepareStatement(updateDiacodSql);
updateDefaultFlagPS.setQueryTimeout(30);
updateDefaultFlagPS.executeUpdate();
updateDefaultFlagPS.close();
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,43 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240916162607 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Smetar)) {
return;
}
if (!isCustomer(IntegryCustomer.Cosmapack)) {
createSetup("WINACCESS", "SETUP", "MAX_DEVIATION_TIME", null,
"Minuti di deviazione massima tra orario di lavoro registrato e quello teorico", false, null, false, false,
false, false, false, null, false, null);
}
createSetup("WINACCESS", "SETUP", "COD_DIVI_CONT", null,
"Cod. divi cont di default per jtb_rlavt", false, null, false, false,
false, false, false, null, false, null);
createSetup("WINACCESS", "SETUP", "SOLO_COMMESSE_ATTIVE", null,
"Indica se mostrare solo le commesse con ordini di lavoro attivi", false, "SI_NO", false, false,
false, false, false, null, false);
createSetup("MES", "REPORT", "RIENTRO", null,
"Nome del report da usare per l'etichetta di rientro", false, "REPORT_NAME", false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,86 @@
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_20240917110039 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Carelli_Winact)) return;
createOrUpdateFunction("steup_getGrigliaVendita", "CREATE FUNCTION [dbo].[steup_getGrigliaVendita](\n" +
" @codMdep VARCHAR(5), @codJfas VARCHAR(5)\n" +
")\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN(WITH tipiArt AS (SELECT value_string AS cod_mtip\n" +
" FROM dbo.ParseStringIntoArray((SELECT value\n" +
" FROM stb_gest_setup\n" +
" WHERE gest_name = 'PVM'\n" +
" AND section = 'RILEVAZIONI_STEUP'\n" +
" AND key_section = 'EXCLUDE_COD_MTIP'), '|') t)\n" +
" , art AS (SELECT DISTINCT cod_griglia, cod_mart\n" +
" FROM carelli.dbo.vtb_griglia_art\n" +
" WHERE cod_griglia = @codMdep\n" +
" AND data_validita =\n" +
" (SELECT MAX(data_validita) FROM carelli.dbo.vtb_griglia_art WHERE cod_griglia = @codMdep) \n" +
" )\n" +
" \n" +
" SELECT DISTINCT case when @codJfas = '01' then art_det.cod_mart_griglia else mtb_aart.cod_mart end as cod_mart,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.bar_code,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.plu,\n" +
" art_det.cod_mart_griglia AS cod_madre \n" +
" FROM carelli.dbo.mtb_aart\n" +
" INNER JOIN jrl_fasi_mtb_grup ON\n" +
" mtb_aart.cod_mgrp = jrl_fasi_mtb_grup.cod_mgrp\n" +
" INNER JOIN (SELECT cod_mart, cod_comp AS cod_mart_griglia\n" +
" FROM carelli.dbo.mtb_comp\n" +
" UNION ALL\n" +
" SELECT cod_comp AS cod_mart, cod_mart AS cod_mart_griglia\n" +
" FROM carelli.dbo.mtb_comp \n" +
" where @codJfas <> '01'\n" +
" UNION ALL\n" +
" SELECT cod_mart, cod_mart AS cod_mart_griglia\n" +
" FROM carelli.dbo.mtb_aart\n" +
" WHERE cod_mart NOT IN (SELECT cod_mart FROM carelli.dbo.mtb_comp)) AS art_det\n" +
" ON mtb_aart.cod_mart = art_det.cod_mart\n" +
" INNER JOIN art ON art_det.cod_mart_griglia = art.cod_mart\n" +
" WHERE jrl_fasi_mtb_grup.cod_jfas = @codJfas\n" +
" AND flag_stato = 'A'\n" +
" AND (mtb_aart.cod_mtip IS NULL OR mtb_aart.cod_mtip NOT IN (SELECT cod_mtip FROM tipiArt))\n" +
" UNION ALL\n" +
" SELECT DISTINCT mtb_aart.cod_mart as cod_mart,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.bar_code,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.plu,\n" +
" mtb_aart.cod_mart AS cod_madre \n" +
" FROM carelli.dbo.mtb_aart\n" +
" INNER JOIN jrl_fasi_mtb_grup ON\n" +
" mtb_aart.cod_mgrp = jrl_fasi_mtb_grup.cod_mgrp\n" +
" INNER JOIN (SELECT DISTINCT cod_mdep, cod_mart \n" +
" FROM carelli.dbo.[getGrigliaAcquisto](null, null, @codMdep, null, null) griglia \n" +
" where griglia.tipo_variazione <> 'D' AND \n" +
" EXISTS( select cod_mart from carelli.dbo.mtb_aart WHERE mtb_aart.cod_mart = griglia.cod_mart AND mtb_aart.cod_mgrp = '03')) art ON \n" +
" mtb_aart.cod_mart = art.cod_mart\n" +
" WHERE jrl_fasi_mtb_grup.cod_jfas = @codJfas\n" +
" AND flag_stato = 'A'\n" +
" AND (mtb_aart.cod_mtip IS NULL OR mtb_aart.cod_mtip NOT IN (SELECT cod_mtip FROM tipiArt))\n" +
" \n" +
" )");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,279 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240917110814 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getListinoVendita_id", "CREATE FUNCTION [dbo].[getListinoVendita_id](@datavalidita DATETIME, @codvlis VARCHAR(5), @codmart VARCHAR(15))\n" +
" RETURNS TABLE AS\n" +
" RETURN \n" +
"\n" +
" --declare @datavalidita DATETIME, @codvlis VARCHAR(5), @codmart VARCHAR(15)\n" +
"\n" +
" with lisv AS (\n" +
" SELECT vtb_list_data.cod_vlis,\n" +
" vtb_list_data.versione,\n" +
" vtb_list_data.id_listino as id_listino,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.cod_vlis AS cod_vlis_rif,\n" +
" vtb_list_data.versione AS versione_rif\n" +
" FROM vtb_list_data \n" +
" WHERE vtb_list_data.data_fine IS NULL\n" +
" AND vtb_list_data.cod_promo IS NULL \n" +
" and vtb_list_data.cod_vlis_rif IS NULL\n" +
" UNION\n" +
" SELECT vtb_list_data.cod_vlis,\n" +
" vtb_list_data.versione,\n" +
" vtb_list_data_rif.id_listino,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.cod_vlis_rif AS cod_vlis_rif,\n" +
" vtb_list_data.versione_rif AS versione_rif\n" +
" FROM vtb_list_data \n" +
" INNER JOIN vtb_list_data vtb_list_data_rif on vtb_list_data.cod_vlis_rif = vtb_list_data_rif.cod_vlis and vtb_list_data.versione_rif = vtb_list_data_rif.versione\n" +
" WHERE vtb_list_data.data_fine IS NULL\n" +
" AND vtb_list_data.cod_promo IS NULL \n" +
" \n" +
" \n" +
" )\n" +
"\n" +
" , last_lisv AS ( \n" +
" SELECT vtb_list.cod_vlis AS cod_vlis,\n" +
" mtb_lisv_data.cod_mart,\n" +
" MAX(vtb_list_data.id_listino) AS max_id_lisv,\n" +
" IsNull(vtb_list_data.cod_vlis_rif, IsNull(vtb_list.cod_vlis_rif, vtb_list.cod_vlis)) AS 'cod_vlis_rif'\n" +
" FROM vtb_list\n" +
" INNER JOIN mtb_lisv_data ON vtb_list.cod_vlis = mtb_lisv_data.cod_vlis\n" +
" LEFT OUTER JOIN lisv vtb_list_data ON mtb_lisv_data.cod_vlis = vtb_list_data.cod_vlis AND\n" +
" mtb_lisv_data.versione = vtb_list_data.versione AND\n" +
" vtb_list_data.data_iniz <= ISNULL(@datavalidita, GETDATE()) \n" +
" GROUP BY vtb_list.cod_vlis,\n" +
" mtb_lisv_data.cod_mart,\n" +
" IsNull(vtb_list_data.cod_vlis_rif, IsNull(vtb_list.cod_vlis_rif, vtb_list.cod_vlis)) ),\n" +
" art as (\n" +
" select mtb_aart.cod_mart, mtb_aart.qta_cnf, mtb_aart.perc_sfrido, mtb_aart.colli_pedana, mtb_aart.colli_strato, mtb_aart.flag_incl_listino\n" +
" from mtb_aart )\n" +
" SELECT vtb_list.cod_vlis,\n" +
" vtb_list.descrizione,\n" +
" vtb_list_data.data_iniz AS data_iniz,\n" +
" vtb_list_data.versione AS versione,\n" +
" vtb_list.cod_divi,\n" +
" vtb_list.cambio,\n" +
" vtb_list.flag_arr_prz_iva,\n" +
" vtb_list.arr_ric,\n" +
" vtb_list.flag_list_iva_inclusa,\n" +
" vtb_list.flag_lisv_margine,\n" +
" vtb_list.flag_add_trasp,\n" +
" tmp_list.cod_mart AS 'cod_mart',\n" +
" mtb_lisv_data.unt_mis_ven AS unt_mis_ven,\n" +
" ISNULL(mtb_lisv_data.rap_conv, 1) AS rap_conv,\n" +
" ISNULL(mtb_lisv_data.prz_base, 0) AS prz_base,\n" +
" ISNULL(mtb_lisv_data.ricarica, 0) AS ricarico,\n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_vend IS NOT NULL AND mtb_lisv_data.prz_vend <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) * 100, 2)\n" +
" ELSE 0 END AS margine_eff,\n" +
" \n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_base IS NOT NULL AND mtb_lisv_data.prz_base <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100)) * 100, 2)\n" +
" ELSE 0 END AS ricarico_eff,\n" +
" \n" +
" ISNULL(mtb_lisv_data.magg_prz_vend, 0) AS magg_prz_vend,\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) AS prz_vend,\n" +
" ISNULL(mtb_lisv_data.prz_vend_iva, 0) AS prz_vend_iva,\n" +
" ISNULL(mtb_lisv_data.perc_sco1, 0) AS perc_sco1,\n" +
" ISNULL(mtb_lisv_data.perc_sco2, 0) AS perc_sco2,\n" +
" ISNULL(mtb_lisv_data.perc_sco3, 0) AS perc_sco3,\n" +
" ISNULL(mtb_lisv_data.perc_sco4, 0) AS perc_sco4,\n" +
" ISNULL(mtb_lisv_data.perc_prov, 0) AS perc_prov,\n" +
" ISNULL(mtb_lisv_data.fisso_prov, 0) AS fisso_prov,\n" +
" ISNULL(mtb_lisv_data.posizione, '') AS posizione,\n" +
" ISNULL(mtb_lisv_data.perc_gest, 0) AS perc_gest,\n" +
" ISNULL(mtb_lisv_data.val_gest, 0) AS val_gest,\n" +
" mtb_lisv_data.data_agg_prz AS data_agg_prz,\n" +
" ISNULL(mtb_lisv_data.perc_ispe, 0) AS perc_ispe,\n" +
" ISNULL(mtb_lisv_data.val_ispe, 0) AS val_ispe,\n" +
" ISNULL(mtb_lisv_data.perc_promo, 0) AS perc_promo,\n" +
" ISNULL(mtb_lisv_data.val_promo, 0) AS val_promo,\n" +
" ISNULL(mtb_lisv_data.perc_oneri, 0) AS perc_oneri,\n" +
" ISNULL(mtb_lisv_data.val_oneri, 0) AS val_oneri,\n" +
" mtb_lisv_data.tipo_variazione AS tipo_variazione,\n" +
" mtb_lisv_data.note AS note,\n" +
" mtb_lisv_data.aggiornato_da AS aggiornato_da,\n" +
" mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1 / 100) * (1 - mtb_lisv_data.perc_sco2 / 100) *\n" +
" (1 - mtb_lisv_data.perc_sco3 / 100) *\n" +
" (1 - mtb_lisv_data.perc_sco4 / 100) AS prz_vend_netto,\n" +
" CASE\n" +
" WHEN ISNULL(mtb_lisv_data.colli_pedana, 0) <> 0 THEN mtb_lisv_data.colli_pedana\n" +
" ELSE mtb_aart.colli_pedana END AS colli_pedana,\n" +
" mtb_lisv_data.cod_tcol_ul AS cod_tcol_ul,\n" +
" mtb_lisv_data.cod_tcol_ui AS cod_tcol_ui,\n" +
" ISNULL(mtb_lisv_data.prz_vend_sug, 0) AS prz_vend_sug,\n" +
" CASE\n" +
" WHEN ISNULL(mtb_lisv_data.qta_cnf, 0) <> 0\n" +
" AND dbo.getGestSetup('VTB_LIST', 'SETUP', 'QTA_CNF_LISTINO') = 'S' \n" +
" THEN mtb_lisv_data.qta_cnf\n" +
" ELSE mtb_aart.qta_cnf END AS qta_cnf,\n" +
" CASE\n" +
" WHEN ISNULL(mtb_lisv_data.colli_strato, 0) <> 0 THEN mtb_lisv_data.colli_strato\n" +
" ELSE mtb_aart.colli_strato END AS colli_strato,\n" +
" mtb_lisv_data.descrizione_html AS descrizione_html,\n" +
" mtb_lisv_data.colli_pedana AS colli_pedana_lisv,\n" +
" mtb_lisv_data.qta_cnf AS qta_cnf_lisv,\n" +
" mtb_lisv_data.colli_strato AS colli_strato_lisv,\n" +
" mtb_lisv_data.sconto_cartoni,\n" +
" mtb_lisv_data.sconto_strato,\n" +
" mtb_lisv_data.sconto_pedane,\n" +
" vtb_list.flag_attivo,\n" +
" vtb_list_data.note AS note_testata,\n" +
" ISNULL(mtb_lisv_data.flag_prz_bloccato, 'N') AS flag_prz_bloccato,\n" +
" vtb_list_data.porto AS porto,\n" +
" mtb_lisv_data.system_note,\n" +
" mtb_lisv.add_val_spese,\n" +
" mtb_lisv.add_ric_spese,\n" +
" mtb_lisv.add_sco_spese,\n" +
" mtb_aart.flag_incl_listino\n" +
" FROM last_lisv tmp_list\n" +
" INNER JOIN vtb_list ON vtb_list.cod_vlis = tmp_list.cod_vlis\n" +
" INNER JOIN mtb_lisv\n" +
" ON tmp_list.cod_vlis_rif = mtb_lisv.cod_vlis AND tmp_list.cod_mart = mtb_lisv.cod_mart\n" +
" INNER JOIN art mtb_aart ON tmp_list.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN vtb_list_data ON tmp_list.cod_vlis_rif = vtb_list_data.cod_vlis AND\n" +
" tmp_list.max_id_lisv = vtb_list_data.id_listino\n" +
" LEFT OUTER JOIN mtb_lisv_data ON vtb_list_data.cod_vlis = mtb_lisv_data.cod_vlis AND\n" +
" tmp_list.cod_mart = mtb_lisv_data.cod_mart AND\n" +
" vtb_list_data.versione = mtb_lisv_data.versione\n" +
"\n" +
" WHERE (@codmart IS NULL OR tmp_list.cod_mart = @codmart)\n" +
" AND (@codvlis IS NULL OR tmp_list.cod_vlis = @codvlis)");
createOrUpdateFunction("getPromozioneVendita_new", "CREATE FUNCTION [dbo].[getPromozioneVendita_new] (@dataIniz datetime, @dataFine datetime, @codVlis varchar(5), @codPromo varchar(10), @codMart varchar(15)) RETURNS TABLE AS \n" +
" return \n" +
"\n" +
"-- declare @dataIniz datetime, @dataFine datetime, @codVlis varchar(5), @codPromo varchar(10), @codMart varchar(15)\n" +
"\n" +
" with lisv AS (\n" +
" SELECT vtb_list_data.cod_vlis,\n" +
" vtb_list_data.versione,\n" +
" vtb_list_data.id_listino as id_listino,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.cod_vlis AS cod_vlis_rif,\n" +
" vtb_list_data.versione AS versione_rif,\n" +
" vtb_list_data.cod_promo,\n" +
" vtb_list_data.data_fine,\n" +
" vtb_list_data.note\n" +
" FROM vtb_list_data \n" +
" WHERE vtb_list_data.cod_promo IS NOT NULL \n" +
" and vtb_list_data.cod_vlis_rif IS NULL\n" +
" UNION\n" +
" SELECT vtb_list_data.cod_vlis,\n" +
" vtb_list_data.versione,\n" +
" vtb_list_data_rif.id_listino,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.cod_vlis_rif AS cod_vlis_rif,\n" +
" vtb_list_data.versione_rif AS versione_rif,\n" +
" vtb_list_data_rif.cod_promo,\n" +
" vtb_list_data_rif.data_fine,\n" +
" vtb_list_data.note\n" +
" FROM vtb_list_data \n" +
" INNER JOIN vtb_list_data vtb_list_data_rif on vtb_list_data.cod_vlis_rif = vtb_list_data_rif.cod_vlis and vtb_list_data.versione_rif = vtb_list_data_rif.versione\n" +
" WHERE vtb_list_data.cod_promo IS NOT NULL )\n" +
" , testata_lisv as (\n" +
" select *\n" +
" from lisv\n" +
" WHERE (@codvlis IS NULL OR lisv.cod_vlis = @codVlis) \n" +
" AND (@codPromo IS NULL OR lisv.cod_promo = @codPromo)\n" +
" AND (((@dataFine IS NULL OR ISNULL(@dataIniz, cast(GetDate() as DATE)) = @dataFine) AND \n" +
" ISNULL(@dataIniz, cast(GetDate() as DATE)) BETWEEN lisv.data_iniz AND lisv.data_fine) OR \n" +
" (@dataFine IS NOT NULL AND ISNULL(@dataIniz, cast(GetDate() as DATE)) <> @dataFine AND \n" +
" (lisv.data_iniz BETWEEN ISNULL(@dataIniz, cast(GetDate() as DATE)) AND @dataFine OR \n" +
" lisv.data_fine BETWEEN ISNULL(@dataIniz, cast(GetDate() as DATE)) AND @dataFine OR \n" +
" ISNULL(@dataIniz, cast(GetDate() as DATE)) BETWEEN lisv.data_iniz AND lisv.data_fine OR\n" +
" @dataFine BETWEEN lisv.data_iniz AND lisv.data_fine ))) )\n" +
" SELECT vtb_list.cod_vlis, \n" +
" vtb_list.descrizione, \n" +
" vtb_list_data.data_iniz, \n" +
" vtb_list_data.data_fine,\n" +
" vtb_list_data.cod_promo,\n" +
" vtb_list_data.versione, \n" +
" vtb_list.cod_divi,\n" +
" vtb_list.flag_arr_prz_iva, \n" +
" vtb_list.arr_ric,\n" +
" vtb_list.flag_list_iva_inclusa,\n" +
" vtb_list.flag_lisv_margine, \n" +
" mtb_lisv_data.cod_mart as cod_mart, \n" +
" mtb_lisv_data.unt_mis_ven as unt_mis_ven,\n" +
" mtb_lisv_data.rap_conv as rap_conv, \n" +
" mtb_lisv_data.prz_base as prz_base, \n" +
" mtb_lisv_data.ricarica as ricarico,\n" +
" \n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_vend IS NOT NULL AND mtb_lisv_data.prz_vend <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) * 100, 2)\n" +
" ELSE 0 END AS margine_eff,\n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_base IS NOT NULL AND mtb_lisv_data.prz_base <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100)) * 100, 2)\n" +
" ELSE 0 END AS ricarico_eff,\n" +
" mtb_lisv_data.prz_vend as prz_vend, \n" +
" mtb_lisv_data.prz_vend_iva as prz_vend_iva, \n" +
" mtb_lisv_data.perc_sco1 as perc_sco1, \n" +
" mtb_lisv_data.perc_sco2 as perc_sco2, \n" +
" mtb_lisv_data.perc_sco3 as perc_sco3, \n" +
" mtb_lisv_data.perc_sco4 as perc_sco4, \n" +
" mtb_lisv_data.perc_prov as perc_prov, \n" +
" mtb_lisv_data.fisso_prov as fisso_prov, \n" +
" mtb_lisv_data.posizione as posizione, \n" +
" mtb_lisv_data.perc_gest as perc_gest, \n" +
" mtb_lisv_data.val_gest as val_gest, \n" +
" mtb_lisv_data.data_agg_prz as data_agg_prz, \n" +
" mtb_lisv_data.perc_ispe as perc_ispe, \n" +
" mtb_lisv_data.val_ispe as val_ispe, \n" +
" mtb_lisv_data.perc_promo as perc_promo, \n" +
" mtb_lisv_data.val_promo as val_promo, \n" +
" mtb_lisv_data.perc_oneri as perc_oneri, \n" +
" mtb_lisv_data.val_oneri as val_oneri, \n" +
" mtb_lisv_data.tipo_variazione as tipo_variazione, \n" +
" mtb_lisv_data.note as note,\n" +
" mtb_lisv_data.aggiornato_da as aggiornato_da,\n" +
" mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1/100) * (1 - mtb_lisv_data.perc_sco2/100)* (1 - mtb_lisv_data.perc_sco3/100)* (1 - mtb_lisv_data.perc_sco4/100) as prz_vend_netto,\n" +
" vtb_promo.descrizione as 'descr_promo',\n" +
" vtb_promo.data_iniz_sell_out,\n" +
" vtb_promo.data_fine_sell_out,\n" +
" vtb_promo.flag_tipo_promo,\n" +
" mtb_lisv_data.sconto_cartoni,\n" +
" mtb_lisv_data.sconto_strato,\n" +
" mtb_lisv_data.sconto_pedane,\n" +
" mtb_lisv_data.giacenza,\n" +
" mtb_lisv_data.magg_prz_vend,\n" +
" vtb_promo.flag_sconto_contrattuale,\n" +
" vtb_promo.intercode_xml_variazioni,\n" +
" vtb_list_data.note as note_testata,\n" +
" vtb_promo.flag_tipologia\n" +
" FROM vtb_list inner join testata_lisv vtb_list_data on vtb_list.cod_vlis = vtb_list_data.cod_vlis_rif\n" +
" inner join mtb_lisv_data on vtb_list_data.cod_vlis_rif = mtb_lisv_data.cod_vlis AND vtb_list_data.versione_rif = mtb_lisv_data.versione\n" +
" inner join mtb_aart on mtb_lisv_data.cod_mart = mtb_aart.cod_mart\n" +
" inner join vtb_promo on vtb_list_data.cod_promo = vtb_promo.cod_promo \n" +
" WHERE (@codMart IS NULL OR mtb_lisv_data.cod_mart = @codMart)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240917172212 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Carelli)) return;
updateSetupValue("IMPORT_RAPPORTINI FG", "MMPOS", "ATTIVO", "N");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems_model.entity;
import com.fasterxml.jackson.annotation.JsonTypeName;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EquatableEntityInterface;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
@@ -10,12 +11,13 @@ import org.kie.api.definition.type.PropertyReactive;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Master
@PropertyReactive
@Table(GtbBancAzi.ENTITY)
@JsonTypeName(GtbBancAzi.ENTITY)
public class GtbBancAzi extends EntityBase {
public class GtbBancAzi extends EntityBase implements EquatableEntityInterface<GtbBancAzi> {
private final static Logger logger = LogManager.getLogger();
@@ -212,4 +214,21 @@ public class GtbBancAzi extends EntityBase {
GtbBancAziEff gtbBancAziEff = new GtbBancAziEff();
gtbBancAziEff.deleteAllEntities(connection, this);
}
@Override
public int hashCodeKey() {
return Objects.hash(getCodBancAzi());
}
@Override
public boolean equalsKey(GtbBancAzi other) {
if (this == other)
return true;
if(hashCodeKey() != other.hashCodeKey())
return false;
return Objects.equals(getCodBancAzi(), other.getCodBancAzi());
}
}

View File

@@ -6,11 +6,13 @@ import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
public class UtilityExcel {
@@ -93,6 +95,10 @@ public class UtilityExcel {
*/
public static Iterator<Row> readXlsxFile(ImportRequestDTO requestDTO, boolean ignoreHeader) throws Exception {
InputStream stream = new ByteArrayInputStream(Base64.decodeBase64(requestDTO.getRawContentB64()));
return readXlsxFile(stream,ignoreHeader);
}
public static Iterator<Row> readXlsxFile(InputStream stream, boolean ignoreHeader) throws Exception {
OPCPackage pkg = OPCPackage.open(stream);
Workbook workbook = new XSSFWorkbook(pkg);

View File

@@ -6,14 +6,16 @@ import java.util.HashMap;
public class AuthTokenDetails {
private long deviceId;
private String profileDb;
private UserDTO userDTO;
private HashMap<String, AuthTokenProfileDetails> profilesData;
public AuthTokenDetails() {
}
public AuthTokenDetails(long deviceId, UserDTO userDTO, HashMap<String, AuthTokenProfileDetails> profilesData) {
public AuthTokenDetails(long deviceId, String profileDb, UserDTO userDTO, HashMap<String, AuthTokenProfileDetails> profilesData) {
this.deviceId = deviceId;
this.profileDb = profileDb;
this.userDTO = userDTO;
this.profilesData = profilesData;
}
@@ -22,6 +24,10 @@ public class AuthTokenDetails {
return deviceId;
}
public String getProfileDb() {
return profileDb;
}
public UserDTO getUserDTO() {
return userDTO;
}

View File

@@ -75,14 +75,21 @@ public class AuthService {
UserDataDTO userData = new UserDataDTO();
if (!UtilityString.isNullOrEmpty(profileDb)) { // SELEZIONE DB DIRETTO
multiDBTransactionManager.closeAll();
multiDBTransactionManager.setPrimaryDs(loginRequestDTO.getProfileDb());
userData.setUser(this.getUser(username, password, multiDBTransactionManager));
} else {
if (UtilityString.isNullOrEmpty(profileDb)) {
List<String> profiles = userService.retrieveAvailableProfiles(username);
userData.setAvailableProfiles(profiles);
if (profiles != null && profiles.size() == 1) {
profileDb = userData.getAvailableProfiles().get(0);
}
}
if (!UtilityString.isNullOrEmpty(profileDb)) { // SELEZIONE DB DIRETTO
multiDBTransactionManager.closeAll();
multiDBTransactionManager.setPrimaryDs(profileDb);
userData.setUser(this.getUser(username, password, multiDBTransactionManager));
}
if (userData.getUser() == null) {

View File

@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.io.Encoders;
import io.jsonwebtoken.security.Keys;
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -143,7 +144,7 @@ public class RefreshTokenService {
}
private UsernamePasswordAuthenticationToken createAuthenticationToken(String username, String password, String keyGroup, long deviceId) {
private UsernamePasswordAuthenticationToken createAuthenticationToken(String username, String password, String keyGroup, long deviceId) throws PrimaryDatabaseNotPresentException {
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(username, password,
ImmutableList.of(new SimpleGrantedAuthority(keyGroup)));
@@ -163,7 +164,9 @@ public class RefreshTokenService {
logger.error(e.getMessage(), e);
}
AuthTokenDetails authTokenDetails = new AuthTokenDetails(deviceId, user, profilesData);
AuthTokenDetails authTokenDetails = new AuthTokenDetails(deviceId,
multiDBTransactionManager.getPrimaryDatasource().getProfile(),
user, profilesData);
authenticationToken.setDetails(authTokenDetails);
return authenticationToken;

View File

@@ -4,6 +4,7 @@ import it.integry.common.var.CommonConstants;
import it.integry.core.service.EmsEngineService;
import it.integry.ems.download.DownloadFileHandlerService;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.media.MimeTypesHandler;
import it.integry.ems.report.dto.JasperDTO;
import it.integry.ems.report.dto.PairsDTO;
import it.integry.ems.report.dto.ReportTypeDTO;
@@ -25,6 +26,8 @@ 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.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@@ -49,7 +52,8 @@ public class EmsEngineController {
private ReportProcessor reportProcessor;
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@Autowired
private MimeTypesHandler mimeTypesHandler;
@Autowired
private DownloadFileHandlerService downloadFileHandlerService;
@Autowired
@@ -60,24 +64,25 @@ public class EmsEngineController {
List<ServiceRestResponse> processReport(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestBody JasperDTO jasperDTO) {
List<ServiceRestResponse> response = new ArrayList<ServiceRestResponse>();
List<ServiceRestResponse> response = new ArrayList<>();
try {
FileItem fi = new FileItem();
byte[] bytes = emsEngineService.processReport(jasperDTO);
if (bytes != null) {
if (bytes != null) {
fi.setFileb64Content(new String(Base64.encodeBase64(bytes)));
response.add(new ServiceRestResponse(EsitoType.OK, multiDBTransactionManager.getPrimaryDatasource().getProfile(), fi));
}
response.add(new ServiceRestResponse(EsitoType.OK, multiDBTransactionManager.getPrimaryDatasource().getProfile(), fi));
response.add(ServiceRestResponse.createNegativeResponse("Nessun report generato!"));
} catch (JRException e) {
logger.error(e + " - Cause: " + e.getCause());
response.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
response.add(ServiceRestResponse.createNegativeResponse(configuration, e));
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
response.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
response.add(ServiceRestResponse.createNegativeResponse(configuration, e));
}
return response;
}
@@ -100,7 +105,6 @@ public class EmsEngineController {
}
}
@RequestMapping(value = EmsRestConstants.PATH_PROCESS_REPORT_TYPE, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse processReportTypeList(HttpServletRequest request,

View File

@@ -96,7 +96,7 @@ public class SteUPController {
) {
ServiceRestResponse response = new ServiceRestResponse();
try {
response.setJsonObject(steUPService.getGrigliaPluRepo(codMdep, codJfas, activityTypeId, codCmac, UtilityDate.getTodayWithoutTime()));
response.setJsonObject(steUPService.getGrigliaPluRepo(codMdep, codJfas, activityTypeId, codCmac, UtilityDate.getTodayWithoutTime(), false));
response.setEsito(EsitoType.OK);
} catch (Exception e) {
logger.error(request.getRequestURI(), e);

View File

@@ -692,8 +692,7 @@ public class SteUPService {
boolean verificaVolantino = UtilityString.equalsIgnoreCase(tipoAttivitaVerificaVolantino, activityTypeId);
barcodes = chkVolantino(codJfas, codMdep, barcodes, verificaVolantino, dataCreation);
} else if (activityTypeId.equalsIgnoreCase(tipoAttivitaRotturaStock)) {
List<HashMap<String, Object>> pluRepo = getGrigliaPluRepo(codMdep, codJfas, activityTypeId, null, dataCreation);
List<HashMap<String, Object>> pluRepo = getGrigliaPluRepo(codMdep, codJfas, activityTypeId, null, dataCreation, true);
if (repartiFreschi != null && repartiFreschi.contains(codJfas)) {
List<String> finalBarcodes = barcodes;
barcodes = new ArrayList<>();
@@ -703,12 +702,13 @@ public class SteUPService {
for (Map.Entry<String, List<HashMap<String, Object>>> entry : pluByCodMarts.entrySet()) {
String codMart = entry.getKey();
System.out.println(codMart);
List<HashMap<String, Object>> hashMapList = entry.getValue();
boolean containBarcode = hashMapList.stream().anyMatch(x -> finalBarcodes.contains(((String) x.get("barcode"))));
if (!containBarcode)
barcodes.add(hashMapList.stream().findFirst().map(x -> x.get("barcode").toString()).get());
barcodes.add(hashMapList.stream().filter(x -> x.get("barcode") !=null).findFirst().map(x -> x.get("barcode").toString()).get());
}
// barcodes = pluRepo.stream().filter(a-> !finalBarcodes.contains(((String) a.get("barcode")))).map(a->(String) a.get("barcode")).collect(Collectors.toList());
} else {
@@ -813,7 +813,9 @@ public class SteUPService {
return toReturn;
}
public List<HashMap<String, Object>> getGrigliaPluRepo(String codMdep, String codJfas, String activityTypeId, String codCmac, Date dataCreation) throws Exception {
public List<HashMap<String, Object>> getGrigliaPluRepo(String codMdep, String codJfas,
String activityTypeId, String codCmac, Date dataCreation,
boolean chkRotturaStock) throws Exception {
String sql = "SELECT dbo.steup_getListinoDepo( " + UtilityDB.valueToString(codMdep) + ") as cod_vlis";
String codVlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (UtilityString.isNullOrEmpty(codVlis))
@@ -852,7 +854,7 @@ public class SteUPService {
} else if (activityTypeId.equalsIgnoreCase(tipoAttivitaRotturaStock)) {
if (repartiFreschi.contains(codJfas)) {
sql = "Select cod_mart,descrizione,bar_code as barcode,cod_msgr from steup_getGrigliaVendita(" + UtilityDB.valueToString(codMdep) + "," + UtilityDB.valueToString(codJfas) + ")";
} else {
} else if (chkRotturaStock) {
sql = "SELECT cod_mart,descrizione,bar_code as barcode,cod_msgr\n" +
"FROM steup_getAssortimento(" + UtilityDB.valueToString(codMdep) + "," + UtilityDB.valueToString(codJfas) + ")\n" +
"WHERE cod_mart NOT IN (SELECT cod_mart\n" +
@@ -878,6 +880,8 @@ public class SteUPService {
" AND g.tipo_variazione = 'I'\n" +
" UNION " +
" SELECT cod_mart FROM dbo.steup_getInevasi(" + UtilityDB.valueToString(codMdep) + ", " + UtilityDB.valueToString(codJfas) + ", " + UtilityDB.valueToString(dataCreation) + "))";
} else {
return new ArrayList<>();
}
} else {
/*

View File

@@ -0,0 +1,57 @@
package it.integry.ems.contabil.Import;
import it.integry.ems.Import.base.BaseEntityImporter;
import it.integry.ems.Import.base.IEntityImporter;
import it.integry.ems.contabil.Import.service.ContabilImportService;
import it.integry.ems_model.base.EntityBase;
import java.util.Collections;
import java.util.List;
public class ScadenzeImporter extends BaseEntityImporter<List<EntityBase>> implements IEntityImporter<List<EntityBase>> {
@Override
public List<EntityBase> doImport() throws Exception {
Format enumFormat = Format.fromString(super.format);
List<EntityBase> entities = Collections.emptyList();
if (enumFormat != null) {
switch (enumFormat) {
case DOCFINANCE:
break;
default:
throw new Exception("Tipo " + format + " non supportato");
}
} else {
throw new Exception("Tipo " + format + " non definito");
}
return entities;
}
public enum Format {
DOCFINANCE("DOC_FINANCE");
private String text;
Format(String text) {
this.text = text;
}
public static Format fromString(String text) {
for (Format b : Format.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
public String getText() {
return this.text;
}
}
}

View File

@@ -0,0 +1,28 @@
package it.integry.ems.contabil.context;
import it.integry.annotations.PostContextConstruct;
import it.integry.ems.Import.base.EntityImporterUtility;
import it.integry.ems.Import.enums.EntityImportType;
import it.integry.ems.contabil.Import.ContabilImporter;
import it.integry.ems.contabil.Import.ScadenzeImporter;
import it.integry.ems.contabil.export.ContabilExporter;
import it.integry.ems.contabil.export.ScadenzeExporter;
import it.integry.ems.export.base.EntityExporterUtility;
import it.integry.ems.export.enums.EntityExportType;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;
@Component
public class EmsScadenzeContext {
private final Logger logger = LogManager.getLogger();
@PostContextConstruct
public void init() {
logger.debug("Init");
EntityExporterUtility.addTypeBinding(EntityExportType.SCADENZE, ScadenzeExporter.class);
EntityImporterUtility.addTypeBinding(EntityImportType.SCADENZE, ScadenzeImporter.class);
}
}

View File

@@ -0,0 +1,55 @@
package it.integry.ems.contabil.export;
import com.fasterxml.jackson.databind.ObjectMapper;
import it.integry.ems.contabil.export.services.MovimentiContabiliExporterService;
import it.integry.ems.contabil.fatture.base.enums.InvoiceType;
import it.integry.ems.contabil.fatture.rest.ExportFattureRequest;
import it.integry.ems.contabil.fatture.services.InvoiceService;
import it.integry.ems.export.base.BaseEntityExporter;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.export.base.IEntityExporter;
import org.springframework.web.context.ContextLoader;
public class ScadenzeExporter extends BaseEntityExporter implements IEntityExporter {
@Override
public EntityExportResponse doExport() throws Exception {
ScadenzeExporterFormat format = ScadenzeExporterFormat.fromString(super.format);
EntityExportResponse entityExportResponse = null;
if (format != null) {
switch (format) {
case DOCFINANCE:
break;
default:
throw new Exception("Tipo " + format + " non supportato");
}
}
return entityExportResponse;
}
public enum ScadenzeExporterFormat {
DOCFINANCE("DOC_FINANCE");
private String text;
ScadenzeExporterFormat(String text) {
this.text = text;
}
public static ScadenzeExporterFormat fromString(String text) {
for (ScadenzeExporterFormat b : ScadenzeExporterFormat.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
public String getText() {
return this.text;
}
}
}

View File

@@ -14,6 +14,7 @@ public class EmsCustomRestConstants {
*/
public static final String PATH_TOSCA_CLOSE_OPENED_STEPS = "closeOpenedSteps";
public static final String PATH_TOSCA_SWITCH_ORDINE_LAVORO = "switchOrdineLavoro";
public static final String PATH_TOSCA_IMPORT_SALES_ORDERS = "importOrdiniVendita";
public static final String PATH_TOSCA_MIGRATE_UL_TRASFERITE = "migrateUlTrasferite";
@@ -30,6 +31,6 @@ public class EmsCustomRestConstants {
/**
* ROSSO GARGANO
*/
public static final String PATH_ROSSO_GARGANO_CAMBIO_LOTTO_PROD = "cambioLottoProd";
public static final String PATH_ROSSO_GARGANO_SYNC_CERTIFICATI_VALORIZZATI = "syncCertificatiValorizzati";
}

View File

@@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest;
@RestController
@Scope(value = "request")
@RequestMapping("rossogargano/mes")
@RequestMapping("rossogargano")
public class RossoGarganoProductionController {
private final Logger logger = LogManager.getLogger();
@@ -28,12 +28,16 @@ public class RossoGarganoProductionController {
public MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = EmsCustomRestConstants.PATH_ROSSO_GARGANO_CAMBIO_LOTTO_PROD, method = RequestMethod.POST)
@RequestMapping(value = EmsCustomRestConstants.PATH_ROSSO_GARGANO_SYNC_CERTIFICATI_VALORIZZATI, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse cambioLottoProduzione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB) {
ServiceRestResponse syncCertificati(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam("externalProfileDb") String externalProfileDB)
{
try {
rossoGarganoProductionService.cambioLottoProduzione();
rossoGarganoProductionService.syncCertificati(externalProfileDB);
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {

View File

@@ -1,12 +1,31 @@
package it.integry.ems.customizations.production.service;
import it.integry.ems.production.dto.ortofrutta.AccettazioneOrtoFruttaDTO;
import it.integry.ems.production.service.MesProductionServiceV2;
import it.integry.ems.production.service.OrtoFruttaProductionService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.dto.CertificatiValorizzatiDTO;
import it.integry.ems.system.exchange.service.ExchangeImportDataManagerService;
import it.integry.ems.system.exchange.service.ExchangeImportSchemaManagerService;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import 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.stereotype.Service;
import java.sql.Connection;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class RossoGarganoProductionService {
@@ -20,130 +39,340 @@ public class RossoGarganoProductionService {
@Autowired
private MesProductionServiceV2 mesProductionServiceV2;
public void cambioLottoProduzione() throws Exception {
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
// Date dataOrd = new Date();
@Autowired
private ExchangeImportDataManagerService exchangeImportDataManagerService;
@Autowired
private OrtoFruttaProductionService ortoFruttaProductionService;
private final Logger logger = LogManager.getLogger();
public void syncCertificati(String externalProfileDb) throws Exception {
try (MultiDBTransactionManager externalTransactionManager = new MultiDBTransactionManager(externalProfileDb)) {
importaValorizzazioniCertificati(externalTransactionManager);
}
}
public void importaValorizzazioniCertificati(MultiDBTransactionManager exchangeDb) throws Exception {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.ValorizzazioneCertificati, true);
final List<CertificatiValorizzatiDTO> exchangeCertificatiOld = retrieveCertificatiValorizzati(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(4),
true, false);
final List<CertificatiValorizzatiDTO> exchangeCertificatiNew = retrieveCertificatiValorizzati(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(4),
false, true);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(CertificatiValorizzatiDTO.class, exchangeCertificatiOld, exchangeCertificatiNew);
if (allData == null || allData.isEmpty())
return;
allData = allData.stream().filter(x -> !x.getOperation().equals(OperationType.DELETE)).collect(Collectors.toList());
final Exception[] firstExceptionToThrow = {null};
final AtomicInteger[] importedCounter = {new AtomicInteger()};
for (EquatableEntityInterface dataToSave : allData) {
CertificatiValorizzatiDTO cert = (CertificatiValorizzatiDTO) dataToSave;
try {
//
// String sql = "SELECT cod_anag FROM " + MtbDepo.ENTITY + " WHERE cod_mdep = " + UtilityDB.valueToString(codMdep);
// String codAnag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
//
// sql = "SELECT ISNULL(MAX(num_ord), -1) FROM " + DtbOrdt.ENTITY + " " +
// "WHERE gestione = 'L' " +
// "AND cod_anag = " + UtilityDB.valueToString(codAnag) + " " +
// "AND cod_jfas = " + UtilityDB.valueToString(codJfas) + " " +
// "AND data_ord = " + UtilityDB.valueToString(dataOrd);
//
// Integer numOrd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
//
// List<DtbOrdSteps> openedSteps = mesProductionServiceV2.getOpenedSteps(codJfas);
//
// if (openedSteps != null) {
// for (DtbOrdSteps dtbOrdStep : openedSteps) {
// mesProductionServiceV2.closeStep(dtbOrdStep.getDataOrd(), dtbOrdStep.getNumOrd(), dtbOrdStep.getGestione(), codJfas, dtbOrdStep.getIdStep(), dtbOrdStep.getIdRiga());
// }
// }
//
// sql = "SELECT data_ord, num_ord, gestione " +
// "FROM dtb_ordt " +
// "WHERE num_ord <> " + UtilityDB.valueToString(numOrd) + " and flag_evaso_forzato <> 'S' and flag_evaso_prod <> 'E' AND cod_jfas = " + UtilityDB.valueToString(codJfas);
// List<DtbOrdt> dtbOrdtsToClose = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
//
// if (dtbOrdtsToClose != null && !dtbOrdtsToClose.isEmpty()) {
// for (DtbOrdt dtbOrdtToClose : dtbOrdtsToClose) {
// dtbOrdtToClose
// .setFlagEvasoProd("E")
// .setFlagEvasoForzato("S");
//
// dtbOrdtToClose.setOperation(OperationType.UPDATE);
// entityProcessor.processEntity(dtbOrdtToClose, false, multiDBTransactionManager);
// }
// }
//
//
// String sqlLastWorkedOrder = "SELECT TOP 1 note, descrizione_attivita, num_ord, data_ord\n" +
// "FROM dtb_ord_steps\n" +
// "WHERE gestione = 'L'\n" +
// " AND cod_jfas = " + UtilityDB.valueToString(codJfas) +
// " ORDER BY data_ord DESC, num_ord DESC, id_riga desc";
// final HashMap<String, Object> stringObjectHashMap = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sqlLastWorkedOrder);
// String lastFormato = UtilityHashMap.getValueIfExists(stringObjectHashMap, "descrizione_attivita");
// String lastTurno = UtilityHashMap.getValueIfExists(stringObjectHashMap, "note");
//
// /*lastFormato = null;
// lastFormato = "WOOD";
// lastFormato = "GREEN";
//
//
// formato = null;
// formato = "WOOD";
// formato = "GREEN";*/
//
// boolean rotateTurno = formato == null || (lastFormato != null && lastFormato.equalsIgnoreCase(formato));
//
// if (!rotateTurno) lastFormato = formato;
//
// DtbOrdt dtbOrdtToInsert = new DtbOrdt()
// .setCodMdep(codMdep)
// .setCodAnag(codAnag)
// .setDataOrd(dataOrd)
// .setCodJfas(codJfas)
// .setGestione("L")
// .setQtaProd(BigDecimal.ONE)
// .setRapConvProd(BigDecimal.ONE)
// .setDtbOrdr(new ArrayList<>())
// .setDtbOrdSteps(new ArrayList<>());
//
//
// DtbOrdSteps dtbOrdStep = new DtbOrdSteps()
// .setCodJfas(codJfas)
// .setDataIniz(dataOrd);
// dtbOrdStep.setOperation(OperationType.INSERT);
//
// Integer idRigaStep = 1;
// if (numOrd >= 0) {
// sql = "SELECT MAX(id_riga) FROM " + DtbOrdSteps.ENTITY +
// " WHERE gestione = 'L'" +
// " AND data_ord = " + UtilityDB.valueToString(dataOrd) +
// " AND num_ord = " + UtilityDB.valueToString(numOrd);
//
// idRigaStep = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
// dtbOrdStep.setIdStep(idRigaStep);
// int lastTurnoInt = Integer.parseInt(lastTurno.split(" ")[1]);
//
// if (rotateTurno) ++lastTurnoInt;
// dtbOrdStep.setNote("Turno " + lastTurnoInt);
// } else {
// DtbOrdSteps dtbOrdStepZero = new DtbOrdSteps()
// .setCodJfas(codJfas)
// .setIdStep(0);
//
// dtbOrdStepZero.setOperation(OperationType.INSERT);
// dtbOrdtToInsert.getDtbOrdSteps().add(dtbOrdStepZero);
//
// dtbOrdStep.setIdStep(1)
// .setNote("Turno " + idRigaStep);
// }
//
// dtbOrdStep.setDescrizioneAttivita(lastFormato);
//
// dtbOrdtToInsert.getDtbOrdSteps().add(dtbOrdStep);
// dtbOrdtToInsert.setOperation(OperationType.INSERT_OR_UPDATE);
//
// if (numOrd >= 0) dtbOrdtToInsert.setNumOrd(numOrd);
// else {
// DtbOrdr dtbOrdr = new DtbOrdr()
// .setCodJfas(codJfas)
// .setDataInizProd(dataOrd)
// .setQtaOrd(BigDecimal.ONE)
// .setNumCnf(BigDecimal.ONE)
// .setQtaCnf(BigDecimal.ONE)
// .setDescrizione("Cassette da lavare");
// dtbOrdr.setOperation(OperationType.INSERT);
//
// dtbOrdtToInsert.getDtbOrdr().add(dtbOrdr);
// }
//
// entityProcessor.processEntity(dtbOrdtToInsert, multiDBTransactionManager);
if (!syncCertificato(cert))
continue;
updateCertificatoImported(exchangeDb.getPrimaryConnection(), cert, true);
multiDBTransactionManager.commitAll();
exchangeDb.commitAll();
logger.debug("Sincronizzati {} certificati di {}", importedCounter[0].incrementAndGet(), allData.size());
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante la sincronizzazione del certificato n. " + cert.getNumDoc() + " del " + UtilityDB.valueToString(cert.getDataDoc()), ex);
multiDBTransactionManager.rollbackAll();
}
}
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.ValorizzazioneCertificati);
}
}
private boolean syncCertificato(CertificatiValorizzatiDTO cert) throws Exception {
AccettazioneOrtoFruttaDTO original = getOriginalAccettazione(cert);
if (original == null)
return false;
AccettazioneOrtoFruttaDTO dto = original.clone();
dto
.setCodAnag(cert.getCodAnag())
.setCodVdes(cert.getCodVdes())
.setPrezzoFinale(cert.getValUnt())
.setValUnt(cert.getValUnt())
.setCodVzon(cert.getCodVzon())
.setScarto(cert.getScartoKg())
.setCnfRese(cert.getCasseRese())
.setNumCnf(cert.getCasseScaricate())
.setIndiceVariazione(cert.getIndiceVariazione())
.setTassoRiduzione(cert.getTassoRiduzione())
;
dto.setOriginal(original);
ortoFruttaProductionService.accettazioneDaRaccolta(dto);
return true;
}
private AccettazioneOrtoFruttaDTO getOriginalAccettazione(CertificatiValorizzatiDTO cert) throws Exception {
String sql = "WITH cod_mgrp_mp AS (SELECT 'MG' AS value),\n" +
" collo AS (SELECT mtb_colt.data_collo,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_colt.cod_mdep,\n" +
" mtb_colt.data_ord,\n" +
" mtb_colt.num_ord,\n" +
" mtb_colt.posizione,\n" +
" mtb_colt.activity_id,\n" +
" mtb_colt.cod_jfas,\n" +
" mtb_colt.data_vers,\n" +
" mtb_colt.ora_iniz_prep,\n" +
" mtb_colt.id_pesata,\n" +
" mtb_colt.ora_fine_prep,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.partita_mag,\n" +
" mtb_colt.peso_kg AS peso_lordo_camion,\n" +
" IIF(mtb_colt.peso_netto_kg = 0, mtb_colt.peso_kg,\n" +
" mtb_colt.peso_netto_kg) AS peso_netto_camion,\n" +
" IIF(mtb_colt.peso_netto_kg > 0, mtb_colt.peso_kg - mtb_colt.peso_netto_kg, 0) AS tara_camion,\n" +
" mtb_colr.peso_lordo_kg AS peso_lordo_pedane,\n" +
" mtb_colr.peso_netto_kg AS peso_netto_pedane,\n" +
" mtb_colr.peso_lordo_kg - mtb_colr.peso_netto_kg AS tara_pedane,\n" +
" mtb_colr.qta_col,\n" +
" mtb_colr.qta_cnf,\n" +
" mtb_colr.num_cnf,\n" +
" mtb_colt.num_doc_provv,\n" +
" mtb_colt.data_doc_provv,\n" +
" mtb_colt.cod_dtip_provv,\n" +
" mtb_colt.ser_doc_provv,\n" +
" mtb_colt.data_doc,\n" +
" mtb_colt.num_doc,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_anag,\n" +
" mtb_colt.ser_doc,\n" +
" mtb_aart.cod_tcol_UI,\n" +
" tcol_art.cod_mart AS cod_mart_bin,\n" +
" tcol_art.peso_kg AS tara_cnf_unt,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.unt_mis\n" +
" FROM mtb_colt\n" +
" INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND\n" +
" mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND\n" +
" mtb_colt.num_collo = mtb_colr.num_collo\n" +
" INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN mtb_tcol ON mtb_aart.cod_tcol_UI = mtb_tcol.cod_tcol\n" +
" LEFT OUTER JOIN mtb_aart tcol_art ON tcol_art.cod_mart = mtb_tcol.cod_mart\n" +
" INNER JOIN cod_mgrp_mp ON mtb_aart.cod_mgrp = cod_mgrp_mp.value\n" +
" WHERE mtb_colt.gestione = 'L'\n" +
" AND mtb_colt.segno = 1\n" +
" AND mtb_colt.data_doc = " + UtilityDB.valueToString(cert.getDataDoc()) + "\n" +
" AND mtb_colt.num_doc = " + UtilityDB.valueToString(cert.getNumDoc()) + "),\n" +
" carat AS (SELECT mtb_partita_mag_carat.activity_id,\n" +
" mtb_partita_mag_carat.cod_mart,\n" +
" 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 = '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" +
" 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" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordr.partita_mag AS partita_mag,\n" +
" dtb_ordr.riga_ord,\n" +
" dtb_ordr.cod_mart AS cod_mart_racc,\n" +
" dtb_ordt.partita_mag AS partita_mag_racc,\n" +
" dtb_ordr.val_unt AS val_unt_racc\n" +
" FROM dtb_ordt\n" +
" INNER JOIN collo\n" +
" ON collo.data_ord = dtb_ordt.data_ord AND collo.num_ord = dtb_ordt.num_ord AND\n" +
" collo.gestione = dtb_ordt.gestione\n" +
" INNER JOIN dtb_ordr ON dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_ordr.num_ord = dtb_ordt.num_ord AND\n" +
" dtb_ordr.gestione = dtb_ordt.gestione),\n" +
" Certificato AS (SELECT dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.targa,\n" +
" dtb_doct.targa_rim,\n" +
" dtb_doct.cod_vvet,\n" +
" dtb_doct.cod_vzon,\n" +
" SUM(IIF(dtb_docr.cod_mart = collo.cod_mart_bin AND dtb_docr.qta_doc < 0,\n" +
" ABS(dtb_docr.qta_doc),\n" +
" 0)) AS cnf_rese\n" +
" FROM dtb_doct\n" +
" INNER JOIN collo ON collo.cod_anag = dtb_doct.cod_anag AND\n" +
" collo.cod_dtip = dtb_doct.cod_dtip AND\n" +
" collo.data_doc = dtb_doct.data_doc AND\n" +
" collo.ser_doc = dtb_doct.ser_doc AND\n" +
" collo.num_doc = dtb_doct.num_doc\n" +
" LEFT OUTER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
" GROUP BY dtb_doct.data_doc, dtb_doct.ser_doc, dtb_doct.num_doc, dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.targa, dtb_doct.targa_rim, dtb_doct.cod_vvet, dtb_doct.cod_vzon),\n" +
" ddt AS (SELECT dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_docr.cod_mart,\n" +
" dtb_docr.val_unt,\n" +
" dtb_docr.val_unt + ((dtb_docr.val_unt * dtb_docr.sconto5 / 100) * -1) AS prezzo_finale,\n" +
" dtb_docr.sconto5,\n" +
" SUM(IIF(qta_doc > 0, qta_doc, 0)) AS qta_doc,\n" +
" SUM(IIF(qta_doc < 0, qta_doc, 0)) AS qta_scarto,\n" +
" SUM(qta_doc) AS qta_imp,\n" +
" SUM(importo_riga) AS tot_doc\n" +
" FROM dtb_doct\n" +
" INNER JOIN collo\n" +
" ON collo.cod_anag = dtb_doct.cod_anag AND collo.cod_dtip_provv = dtb_doct.cod_dtip AND\n" +
" collo.data_doc_provv = dtb_doct.data_doc AND\n" +
" collo.ser_doc_provv = dtb_doct.ser_doc AND\n" +
" collo.num_doc_provv = dtb_doct.num_doc\n" +
" INNER JOIN ordRacc ON collo.data_ord = ordRacc.data_ord AND collo.num_ord = ordRacc.num_ord AND\n" +
" collo.gestione = ordRacc.gestione\n" +
" LEFT OUTER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc AND\n" +
" dtb_docr.cod_mart = ordRacc.cod_mart_racc\n" +
" GROUP BY dtb_docr.val_unt, dtb_docr.cod_mart, dtb_doct.cod_dtip, dtb_doct.cod_anag, dtb_doct.ser_doc,\n" +
" dtb_doct.data_doc, dtb_doct.num_doc, dtb_docr.sconto5)\n" +
"\n" +
"\n" +
"SELECT collo.gestione AS gestione,\n" +
" collo.data_collo AS dataCollo,\n" +
" collo.num_collo AS numCollo,\n" +
" collo.ser_collo AS serCollo,\n" +
" ddt.cod_anag AS codAnag,\n" +
" collo.cod_mdep AS codMdepProd,\n" +
" collo.ora_fine_prep AS oraFinePrep,\n" +
" collo.ora_iniz_prep AS oraInizPrep,\n" +
" collo.id_pesata AS idPesata,\n" +
" collo.data_vers AS dataVers,\n" +
" collo.data_ord AS dataOrd,\n" +
" collo.num_ord AS numOrd,\n" +
" ordRacc.riga_ord AS rigaOrd,\n" +
" collo.partita_mag AS partitaRaccolta,\n" +
" collo.cod_mart AS codMart,\n" +
" ordRacc.cod_jfas AS codJfas,\n" +
" collo.descrizione AS descrizione,\n" +
" collo.unt_mis AS untMis,\n" +
" ordRacc.partita_mag AS partitaMag,\n" +
" collo.qta_col AS qtaCol,\n" +
" collo.num_cnf AS numCnf,\n" +
" collo.qta_cnf AS qtaCnf,\n" +
" peso_lordo_camion AS pesoLordoCamion,\n" +
" peso_netto_pedane + (collo.tara_cnf_unt * collo.num_cnf) AS pesoNettoCamion,\n" +
" peso_lordo_camion -\n" +
" (peso_netto_pedane + (collo.tara_cnf_unt * collo.num_cnf)) AS pesoTaraCamion,\n" +
" peso_netto_pedane + (collo.tara_cnf_unt * collo.num_cnf) AS pesoLordoPedane,\n" +
" peso_netto_pedane AS pesoNettoPedane,\n" +
" tara_pedane AS pesoTaraPedane,\n" +
" collo.num_doc_provv AS numDocProvv,\n" +
" collo.data_doc_provv AS dataDocProvv,\n" +
" collo.cod_dtip_provv AS codDtipProvv,\n" +
" collo.ser_doc_provv AS serDocProvv,\n" +
" Certificato.targa AS targa,\n" +
" Certificato.targa_rim AS targaRim,\n" +
" Certificato.cod_vvet AS codVvet,\n" +
" Certificato.cod_vzon AS codVzon,\n" +
" collo.data_doc AS dataDoc,\n" +
" collo.num_doc AS numDoc,\n" +
" collo.cod_dtip AS codDtip,\n" +
" ordRacc.val_unt_racc AS prezzoContratto,\n" +
" ddt.prezzo_finale AS prezzoFinale,\n" +
" Certificato.cnf_rese AS cnfRese,\n" +
" ISNULL(collo.tara_cnf_unt, 0) AS taraCnf,\n" +
" collo.tara_cnf_unt * collo.num_cnf AS totCnf,\n" +
" -1 * (ddt.qta_scarto * 100) / ddt.qta_doc AS tassoRiduzione,\n" +
" ddt.sconto5 AS indiceVariazione,\n" +
" ddt.qta_scarto * -1 AS scarto,\n" +
" ISNULL(ddt.qta_imp, collo.qta_col) AS nettoPagamento,\n" +
" ISNULL(ddt.tot_doc,\n" +
" (ISNULL(ddt.val_unt, ordRacc.val_unt_racc) * ISNULL(ddt.qta_imp, collo.qta_col))) AS importo,\n" +
" IIF(ISNULL(ddt.num_doc, 0) > 0, 1, 0) AS docRegistrato,\n" +
" carat.lottoProduttore,\n" +
" carat.modalitaRaccolta,\n" +
" carat.varieta\n" +
"FROM collo\n" +
" INNER JOIN ordRacc\n" +
" ON collo.data_ord = ordRacc.data_ord AND collo.num_ord = ordRacc.num_ord AND\n" +
" collo.gestione = ordRacc.gestione\n" +
" LEFT OUTER JOIN Certificato\n" +
" ON collo.cod_anag = Certificato.cod_anag AND collo.cod_dtip = Certificato.cod_dtip AND\n" +
" collo.data_doc = Certificato.data_doc AND collo.ser_doc = Certificato.ser_doc AND\n" +
" collo.num_doc = Certificato.num_doc\n" +
" LEFT OUTER JOIN ddt ON collo.cod_anag = ddt.cod_anag AND collo.cod_dtip_provv = ddt.cod_dtip AND\n" +
" collo.data_doc_provv = ddt.data_doc AND collo.ser_doc_provv = ddt.ser_doc AND\n" +
" collo.num_doc_provv = ddt.num_doc\n" +
" , carat";
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AccettazioneOrtoFruttaDTO.class);
}
private void updateCertificatoImported(Connection connection, CertificatiValorizzatiDTO cert, boolean useTempTable) throws Exception {
final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{
put("data_doc", cert.getDataDoc());
put("num_doc", cert.getNumDoc());
}};
exchangeImportDataManagerService.updateImportedStatus(connection, "valorizzazione_certificati", importedKey, useTempTable);
}
private List<CertificatiValorizzatiDTO> retrieveCertificatiValorizzati(Connection primaryConnection, LocalDate minDate, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String valorizzazioneCertificatiOriginalTableName = "valorizzazione_certificati";
String valorizzazioneCertificatiTableName = valorizzazioneCertificatiOriginalTableName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(primaryConnection,
"INSERT INTO " + valorizzazioneCertificatiTableName +
" SELECT * FROM " + valorizzazioneCertificatiOriginalTableName
);
}
return exchangeImportDataManagerService.retrieveDataFromExchange(primaryConnection, CertificatiValorizzatiDTO.class,
valorizzazioneCertificatiTableName, Query.format("cod_mart is not null AND data_doc > {}", minDate), retrieveAlreadyImported);
}
}

View File

@@ -0,0 +1,54 @@
package it.integry.ems.customizations.sales.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.customizations.constant.EmsCustomRestConstants;
import it.integry.ems.customizations.production.service.ToscaProductionService;
import it.integry.ems.customizations.sales.service.ToscaSalesService;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
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 org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
@RestController
@Scope(value = "request")
@RequestMapping("tosca/sales")
public class ToscaSalesController {
private final Logger logger = LogManager.getLogger();
@Autowired
public ToscaSalesService toscaSalesService;
@Autowired
public MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = EmsCustomRestConstants.PATH_TOSCA_IMPORT_SALES_ORDERS, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse importOrdiniVendita(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestPart() MultipartFile file
) {
try {
toscaSalesService.importOrdiniVendita(file);
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

@@ -0,0 +1,170 @@
package it.integry.ems.customizations.sales.dto;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
public class ToscaOrdineVenditaDTO {
private String transactionNumber;
private Date dateTransaction;
private Long itemNumber;
private String itemName;
private BigDecimal quantityDelivered;
private String depotNumber;
private String depotName;
private String flowDirection;
private Integer flowTypeId;
private String flowTypeName;
private Long CounterPId;
private String CounterPNr;
private String CounterPName;
private String codAnag;
private String codMart;
private String codMdep;
public String getTransactionNumber() {
return transactionNumber;
}
public ToscaOrdineVenditaDTO setTransactionNumber(String transactionNumber) {
this.transactionNumber = transactionNumber;
return this;
}
public Date getDateTransaction() {
return dateTransaction;
}
public ToscaOrdineVenditaDTO setDateTransaction(Date dateTransaction) {
this.dateTransaction = dateTransaction;
return this;
}
public Long getItemNumber() {
return itemNumber;
}
public ToscaOrdineVenditaDTO setItemNumber(Long itemNumber) {
this.itemNumber = itemNumber;
return this;
}
public String getItemName() {
return itemName;
}
public ToscaOrdineVenditaDTO setItemName(String itemName) {
this.itemName = itemName;
return this;
}
public BigDecimal getQuantityDelivered() {
return quantityDelivered;
}
public ToscaOrdineVenditaDTO setQuantityDelivered(BigDecimal quantityDelivered) {
this.quantityDelivered = quantityDelivered;
return this;
}
public String getDepotNumber() {
return depotNumber;
}
public ToscaOrdineVenditaDTO setDepotNumber(String depotNumber) {
this.depotNumber = depotNumber;
return this;
}
public String getDepotName() {
return depotName;
}
public ToscaOrdineVenditaDTO setDepotName(String depotName) {
this.depotName = depotName;
return this;
}
public String getFlowDirection() {
return flowDirection;
}
public ToscaOrdineVenditaDTO setFlowDirection(String flowDirection) {
this.flowDirection = flowDirection;
return this;
}
public Integer getFlowTypeId() {
return flowTypeId;
}
public ToscaOrdineVenditaDTO setFlowTypeId(Integer flowTypeId) {
this.flowTypeId = flowTypeId;
return this;
}
public String getFlowTypeName() {
return flowTypeName;
}
public ToscaOrdineVenditaDTO setFlowTypeName(String flowTypeName) {
this.flowTypeName = flowTypeName;
return this;
}
public Long getCounterPId() {
return CounterPId;
}
public ToscaOrdineVenditaDTO setCounterPId(Long counterPId) {
CounterPId = counterPId;
return this;
}
public String getCounterPNr() {
return CounterPNr;
}
public ToscaOrdineVenditaDTO setCounterPNr(String counterPNr) {
CounterPNr = counterPNr;
return this;
}
public String getCounterPName() {
return CounterPName;
}
public ToscaOrdineVenditaDTO setCounterPName(String counterPName) {
CounterPName = counterPName;
return this;
}
public String getCodAnag() {
return codAnag;
}
public ToscaOrdineVenditaDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodMart() {
return codMart;
}
public ToscaOrdineVenditaDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getCodMdep() {
return codMdep;
}
public ToscaOrdineVenditaDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
}

View File

@@ -0,0 +1,238 @@
package it.integry.ems.customizations.sales.service;
import it.integry.common.var.CommonConstants;
import it.integry.ems.customizations.sales.dto.ToscaOrdineVenditaDTO;
import it.integry.ems.production.service.MesProductionServiceV2;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.entity.DtbOrdr;
import it.integry.ems_model.entity.DtbOrdt;
import it.integry.ems_model.entity.GtbAnag;
import it.integry.ems_model.entity.VtbClie;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.bcel.classfile.Utility;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Scope("request")
public class ToscaSalesService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private EntityProcessor entityProcessor;
public void importOrdiniLavorazione() {
}
public void importOrdiniVendita(MultipartFile file) throws Exception {
InputStream inputStream = file.getInputStream();
List<ToscaOrdineVenditaDTO> ordiniDaImportare = parseFile(inputStream);
List<Date> invalidDates = ordiniDaImportare.stream().map(ToscaOrdineVenditaDTO::getDateTransaction).distinct().filter(d -> d.before(UtilityDate.getStartOfDay(new Date()))).collect(Collectors.toList());
if (!UtilityList.isNullOrEmpty(invalidDates))
throw new Exception("Caricare l'impegnato per giorni passati non è consentito");
importAnagrafiche(ordiniDaImportare);
Map<String, List<ToscaOrdineVenditaDTO>> ordini = ordiniDaImportare.stream().collect(Collectors.groupingBy(ToscaOrdineVenditaDTO::getTransactionNumber));
for (String transactionNumber : ordini.keySet()) {
List<ToscaOrdineVenditaDTO> rows = ordini.get(transactionNumber);
importOrdine(transactionNumber, rows);
}
clearOldOrders();
}
private List<ToscaOrdineVenditaDTO> parseFile(InputStream inputStream) throws Exception {
Iterator<Row> rowIterator = UtilityExcel.readXlsxFile(inputStream, true);
List<ToscaOrdineVenditaDTO> ordiniDaImportare = new ArrayList<>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
ToscaOrdineVenditaDTO newDTO = new ToscaOrdineVenditaDTO();
newDTO
.setTransactionNumber(UtilityExcel.getCellAsString(row, 0))
.setDateTransaction(UtilityExcel.getCellAsDate(row, 1, CommonConstants.DATE_FORMAT_DMY_DASHED))
.setItemNumber(Long.valueOf(UtilityExcel.getCellAsString(row, 2)))
.setItemName(UtilityExcel.getCellAsString(row, 3))
.setQuantityDelivered(new BigDecimal(UtilityExcel.getCellAsString(row, 4)))
.setDepotNumber(UtilityExcel.getCellAsString(row, 5))
.setDepotName(UtilityExcel.getCellAsString(row, 6))
.setFlowDirection(UtilityExcel.getCellAsString(row, 7))
.setFlowTypeId(Integer.valueOf(UtilityExcel.getCellAsString(row, 8)))
.setFlowTypeName(UtilityExcel.getCellAsString(row, 9))
.setCounterPId(Long.valueOf(UtilityExcel.getCellAsString(row, 10)))
.setCounterPNr(UtilityExcel.getCellAsString(row, 11))
.setCounterPName(UtilityExcel.getCellAsString(row, 12))
.setCodAnag(findCodAnagFromDiacod(newDTO.getCounterPNr()))
.setCodMart(findCodMartFromDiacod(String.valueOf(newDTO.getItemNumber())))
.setCodMdep(findCodMdepFromDiacod(newDTO.getDepotNumber()))
;
ordiniDaImportare.add(newDTO);
}
return ordiniDaImportare;
}
private String findCodMdepFromDiacod(String diacod) throws Exception {
String sql = "select cod_mdep from mtb_depo_intercode where intercode = " + UtilityDB.valueToString(diacod);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
private String findCodMartFromDiacod(String diacod) throws Exception {
String sql = "SELECT cod_mart from mtb_aart where diacod = " + UtilityDB.valueToString(diacod);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
private String findCodAnagFromDiacod(String diacod) throws Exception {
String sql = "SELECT gtb_anag.cod_anag from gtb_anag inner join vtb_clie on vtb_clie.cod_anag = gtb_anag.cod_anag where diacod = " + UtilityDB.valueToString(diacod);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
private void importOrdine(String transactionNumber, List<ToscaOrdineVenditaDTO> rows) throws Exception {
ToscaOrdineVenditaDTO testata = rows.get(0);
DtbOrdt ordine = getOrdineVendita(transactionNumber, testata.getCodMdep());
ordine.setCodAnag(testata.getCodAnag())
.setCodMdep(testata.getCodMdep());
for (ToscaOrdineVenditaDTO row : rows) {
DtbOrdr dbRow = ordine.getDtbOrdr().stream().filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart())).findFirst().orElse(new DtbOrdr());
dbRow
.setFlagEvasoForzato("N")
.setCodMart(row.getCodMart())
.setQtaOrd(row.getQuantityDelivered().abs())
.setDataCons(row.getDateTransaction())
.setOperation(OperationType.INSERT_OR_UPDATE);
if (dbRow.getRigaOrd() == null) {
ordine.getDtbOrdr().add(dbRow);
}
}
ordine.getDtbOrdr().stream().filter(x -> x.getOperation() == OperationType.NO_OP).forEach(x -> x.setFlagEvasoForzato("S").setOperation(OperationType.UPDATE));
entityProcessor.processEntity(ordine, true, multiDBTransactionManager);
}
private DtbOrdt getOrdineVendita(String transactionNumber, String codMdep) throws Exception {
String sql = "SELECT * from dtb_ordt where gestione = 'V' and rif_ord = " + UtilityDB.valueToString(transactionNumber) + " AND cod_mdep = " + UtilityDB.valueToString(codMdep);
DtbOrdt ordine = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
if (ordine == null) {
ordine = new DtbOrdt();
ordine.setDataOrd(new Date())
.setGestione("V");
} else {
List<DtbOrdr> orderRows = getRigheOrdine(ordine);
orderRows.forEach(r -> r.setOperation(OperationType.NO_OP));
ordine.setDtbOrdr(orderRows);
}
ordine
.setRifOrd(transactionNumber)
.setOperation(OperationType.INSERT_OR_UPDATE);
return ordine;
}
private List<DtbOrdr> getRigheOrdine(DtbOrdt ordine) throws Exception {
String sql = "SELECT * from dtb_ordr where data_ord = " + UtilityDB.valueToString(ordine.getDataOrd()) + " AND num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + " AND gestione = " + UtilityDB.valueToString(ordine.getGestione());
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
}
private void importAnagrafiche(List<ToscaOrdineVenditaDTO> ordini) throws Exception {
String sql = "SELECT gtb_anag.* from gtb_anag inner join vtb_clie on vtb_clie.cod_anag = gtb_anag.cod_anag where diacod in (" + UtilityDB.listValueToString(ordini.stream().map(ToscaOrdineVenditaDTO::getCounterPNr).collect(Collectors.toList())) + ") ";
List<GtbAnag> clientiEsistenti = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GtbAnag.class);
if (UtilityList.isNullOrEmpty(clientiEsistenti))
clientiEsistenti = new ArrayList<>();
for (ToscaOrdineVenditaDTO order : ordini) {
if (!UtilityString.isNullOrEmpty(order.getCodAnag()))
continue;
String codAnag = clientiEsistenti.stream().filter(x -> x.getDiacod().equalsIgnoreCase(order.getCounterPNr())).findFirst().orElse(new GtbAnag()).getCodAnag();
if (!UtilityString.isNullOrEmpty(codAnag)) {
order.setCodAnag(codAnag);
continue;
}
String ragSoc = order.getCounterPName();
GtbAnag gtbAnag = new GtbAnag();
gtbAnag
.setPrecode("C")
.setRagSoc(ragSoc.length() >= 40 ? ragSoc.substring(0, 39) : ragSoc)
.setNote(ragSoc)
.setDiacod(order.getCounterPNr())
.setOperation(OperationType.INSERT);
VtbClie clie = new VtbClie();
clie.setOperation(OperationType.INSERT);
gtbAnag.setVtbClie(clie);
entityProcessor.processEntity(gtbAnag, true, multiDBTransactionManager);
order.setCodAnag(gtbAnag.getCodAnag());
clientiEsistenti.add(gtbAnag);
}
}
private void clearOldOrders() throws Exception {
String sql = "SELECT dtb_ordr.*\n" +
"FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordr.gestione = dtb_ordt.gestione\n" +
" AND dtb_ordr.data_ord = dtb_ordt.data_ord\n" +
" AND dtb_ordr.num_ord = dtb_ordt.num_ord\n" +
"where dtb_ordt.gestione = 'V'\n" +
"and dtb_ordr.flag_evaso_forzato = 'N' and data_cons < CAST (getdate() as date);\n" +
"\n";
List<DtbOrdr> righeOrdiniDaAnnullare = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
if (UtilityList.isNullOrEmpty(righeOrdiniDaAnnullare))
return;
List<DtbOrdt> ordiniDaAnnullare = new ArrayList<>();
for (DtbOrdr row : righeOrdiniDaAnnullare) {
DtbOrdt ord = ordiniDaAnnullare.stream().filter(x -> x.getDataOrd() == row.getDataOrd() && Objects.equals(x.getNumOrd(), row.getNumOrd()) && Objects.equals(x.getGestione(), row.getGestione())).findFirst().orElse(new DtbOrdt());
row
.setFlagEvasoForzato("S")
.setOperation(OperationType.UPDATE)
;
ord.setDataOrd(row.getDataOrd())
.setGestione(row.getGestione())
.setNumOrd(row.getNumOrd())
.getDtbOrdr().add(row);
if (ord.getOperation() == null) {
ord.setOperation(OperationType.UPDATE);
ordiniDaAnnullare.add(ord);
}
}
entityProcessor.processEntityList(ordiniDaAnnullare, true);
UtilityEntity.throwEntitiesException(ordiniDaAnnullare);
}
}

View File

@@ -11,6 +11,7 @@ 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.stereotype.Service;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@@ -20,46 +21,24 @@ import javax.servlet.http.HttpServletRequest;
@RequestMapping("/ordify")
public class OrdifyController {
private final Logger logger = LogManager.getLogger();
@Autowired
private OrdifyService ordifyService;
/*
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;*/
@RequestMapping(value = EmsRestConstants.PATH_ORDERS_IMPORT_ORDIFY, method = RequestMethod.POST)
public @ResponseBody
Object importOrdiniWeb(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam("md5User") String md5User,
@RequestBody OrdifyOrdineDTO[] ordiniList) {
ServiceRestResponse response = new ServiceRestResponse();
try {
response.setJsonObject(ordifyService.importOrdini(md5User, ordiniList));
response.setEsito(EsitoType.OK);
public @ResponseBody Object importOrdiniWeb(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam("md5User") String md5User,
@RequestBody OrdifyOrdineDTO[] ordiniList) throws Exception {
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
response = new ServiceRestResponse(EsitoType.KO, profileDB, e);
}
return response;
return ServiceRestResponse.createPositiveResponse(ordifyService.importOrdini(md5User, ordiniList));
}
@RequestMapping(value = EmsRestConstants.PATH_REQUEST_PAYMENT_ON_DELIVERY_ORDIFY, method = RequestMethod.POST)
public @ResponseBody
Object paymentOnDelivery(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam("md5User") String md5User,
@RequestBody OrdifySospesoDTO docSospeso) {
ServiceRestResponse response = new ServiceRestResponse();
try {
response.setJsonObject(ordifyService.paymentOnDelivery(md5User, docSospeso));
response.setEsito(EsitoType.OK);
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
response = new ServiceRestResponse(EsitoType.KO, profileDB, e);
}
return response;
public @ResponseBody Object paymentOnDelivery(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam("md5User") String md5User,
@RequestBody OrdifySospesoDTO docSospeso) throws Exception {
return ServiceRestResponse.createPositiveResponse(ordifyService.paymentOnDelivery(md5User, docSospeso));
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.production.controller;
import it.integry.ems.production.dto.ortofrutta.AccettazioneOrtoFruttaDTO;
import it.integry.ems.production.service.OrtoFruttaProductionService;
import it.integry.ems.response.ServiceRestResponse;
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;
@@ -21,6 +22,8 @@ public class OrtoFruttaController {
@Autowired
private OrtoFruttaProductionService ortoFruttaProductionService;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@RequestMapping(value = "/entrata/salva", method = RequestMethod.POST)

View File

@@ -1,74 +1,140 @@
package it.integry.ems.production.dto.ortofrutta;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class AccettazioneOrtoFruttaDTO {
public class AccettazioneOrtoFruttaDTO implements Cloneable {
//dati collo
@SqlField("gestione")
private String gestione;
@SqlField("dataCollo")
private LocalDate dataCollo;
@SqlField("numCollo")
private Integer numCollo;
@SqlField("serCollo")
private String serCollo;
@SqlField("oraFinePrep")
private LocalDateTime oraFinePrep;
@SqlField("oraInizPrep")
private LocalDateTime oraInizPrep;
@SqlField("idPesata")
private String idPesata;
@SqlField("dataVers")
private LocalDateTime dataVers;
@SqlField("dataIns")
private LocalDateTime dataIns;
@SqlField("dataOrd")
private LocalDate dataOrd;
@SqlField("numOrd")
private Integer numOrd;
@SqlField("rigaOrd")
private Integer rigaOrd;
@SqlField("partitaRaccolta")
private String partitaRaccolta;
@SqlField("codMart")
private String codMart;
@SqlField("codJfas")
private String codJfas;
@SqlField("descrizione")
private String descrizione;
@SqlField("untMis")
private String untMis;
@SqlField("partitaMag")
private String partitaMag;
@SqlField("qtaCol")
private BigDecimal qtaCol;
@SqlField("numCnf")
private BigDecimal numCnf;
@SqlField("qtaCnf")
private BigDecimal qtaCnf;
@SqlField("ragSocProduttore")
private String ragSocProduttore;
@SqlField("partIvaProduttore")
private String partIvaProduttore;
@SqlField("varieta")
private String varieta;
@SqlField("ragSocOp")
private String ragSocOp;
@SqlField("partIvaOp")
private String partIvaOp;
@SqlField("ragSocCoop")
private String ragSocCoop;
@SqlField("partIvaCoop")
private String partIvaCoop;
@SqlField("numDocProvv")
private Integer numDocProvv;
@SqlField("serDocProvv")
private String serDocProvv;
@SqlField("dataDocProvv")
private LocalDate dataDocProvv;
@SqlField("targa")
private String targa;
@SqlField("targaRim")
private String targaRim;
@SqlField("codVvet")
private String codVvet;
@SqlField("codVdes")
private String codVdes;
@SqlField("codAnag")
private String codAnag;
@SqlField("codMdep")
private String codMdep;
@SqlField("codMdepProd")
private String codMdepProd;
@SqlField("prezzoContratto")
private BigDecimal prezzoContratto;
@SqlField("NumericTextBox")
private BigDecimal NumericTextBox;
@SqlField("prezzoFinale")
private BigDecimal prezzoFinale;
@SqlField("cnfRese")
private BigDecimal cnfRese;
@SqlField("taraCnf")
private BigDecimal taraCnf;
@SqlField("totCnf")
private BigDecimal totCnf;
@SqlField("tassoRiduzione")
private BigDecimal tassoRiduzione;
@SqlField("scarto")
private BigDecimal scarto;
@SqlField("nettoPagamento")
private BigDecimal nettoPagamento;
@SqlField("importo")
private BigDecimal importo;
@SqlField("pesoLordoCamion")
private BigDecimal pesoLordoCamion;
@SqlField("pesoNettoCamion")
private BigDecimal pesoNettoCamion;
@SqlField("pesoTaraCamion")
private BigDecimal pesoTaraCamion;
@SqlField("pesoLordoPedane")
private BigDecimal pesoLordoPedane;
@SqlField("pesoNettoPedane")
private BigDecimal pesoNettoPedane;
@SqlField("codDtipProvv")
private String codDtipProvv;
@SqlField("dataDoc")
private LocalDate dataDoc;
@SqlField("numDoc")
private Integer numDoc;
@SqlField("codDtip")
private String codDtip;
@SqlField("valUnt")
private BigDecimal valUnt;
@SqlField("original")
private AccettazioneOrtoFruttaDTO original;
@SqlField("lottoProduttore")
private String lottoProduttore;
@SqlField("modalitaRaccolta")
private String modalitaRaccolta;
@SqlField("codVzon")
private String codVzon;
@SqlField("indiceVariazione")
private BigDecimal indiceVariazione;
public String getGestione() {
@@ -603,23 +669,23 @@ public class AccettazioneOrtoFruttaDTO {
}
public boolean isCertificatoEdited() {
if (this.original == null )
if (this.original == null)
return false;
return ! this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| ! this.original.getCodDtip().equalsIgnoreCase(this.codDtip);
return !this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| !this.original.getCodDtip().equalsIgnoreCase(this.codDtip);
}
public boolean isDDTEdited() {
if (this.original == null )
if (this.original == null)
return false;
return ! this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| ! this.original.getCodDtipProvv().equalsIgnoreCase(this.codDtipProvv)
|| ! (this.original.getNumDocProvv().equals(this.numDocProvv))
|| ! this.original.getSerDocProvv().equalsIgnoreCase(this.serDocProvv)
|| ! (this.original.getDataDocProvv().isEqual(this.dataDocProvv));
return !this.original.getCodAnag().equalsIgnoreCase(this.codAnag)
|| !this.original.getCodDtipProvv().equalsIgnoreCase(this.codDtipProvv)
|| !(this.original.getNumDocProvv().equals(this.numDocProvv))
|| !this.original.getSerDocProvv().equalsIgnoreCase(this.serDocProvv)
|| !(this.original.getDataDocProvv().isEqual(this.dataDocProvv));
}
@@ -649,4 +715,22 @@ public class AccettazioneOrtoFruttaDTO {
this.codVzon = codVzon;
return this;
}
@Override
public AccettazioneOrtoFruttaDTO clone() {
try {
return (AccettazioneOrtoFruttaDTO) super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
public BigDecimal getIndiceVariazione() {
return indiceVariazione;
}
public AccettazioneOrtoFruttaDTO setIndiceVariazione(BigDecimal indiceVariazione) {
this.indiceVariazione = indiceVariazione;
return this;
}
}

View File

@@ -46,6 +46,17 @@ public class MrpConsumiHandlerService {
if ( saveCache() ) {
looperService.add(() -> this.internalCacheConsumi(consumiCachedData), (UtilityDebug.isDebugExecution()?5:1) * 60 * 1000, MrpConsumiHandlerService.class.getName());
}
if (UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) {
looperService.add(() -> {
try {
loadConsumi( "biolevante", "BIOLEVANTE", consumiCachedData);
} catch (Exception e) {
throw new RuntimeException(e);
}
}, 5 * 1000, ProductionOrderDataHandlerService.class.getName());
}
}
private boolean saveCache(){
@@ -66,21 +77,9 @@ public class MrpConsumiHandlerService {
for (String dbName : databases.keySet()) {
String profileName = databases.get(dbName).get(0).getProfileName();
Date startDate = new Date();
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
boolean gestioneAbilitata = isGestioneAbilitata(multiDBTransactionManager);
loadConsumi(dbName,profileName,consumiList);
if ( gestioneAbilitata ) {
Map<String, List<MRPDailyConsumiDTO>> consumi = getConsumi(multiDBTransactionManager);
HashMap<String, Map<String, List<MRPDailyConsumiDTO>>> section = getSectionConsumiByDBName(consumiList, dbName);
section.clear();
section.put(dbName, consumi);
}
logger.trace(MrpConsumiHandlerService.class.getSimpleName() + " - Consumi: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
multiDBTransactionManager.closeAll();
}
} catch (Exception ex) {
@@ -88,6 +87,24 @@ public class MrpConsumiHandlerService {
}
}
private void loadConsumi(String dbName, String profileName, HashMap<String, HashMap<String, Map<String, List<MRPDailyConsumiDTO>>>> consumiList) throws Exception {
Date startDate = new Date();
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
boolean gestioneAbilitata = isGestioneAbilitata(multiDBTransactionManager);
if ( gestioneAbilitata ) {
Map<String, List<MRPDailyConsumiDTO>> consumi = getConsumi(multiDBTransactionManager);
HashMap<String, Map<String, List<MRPDailyConsumiDTO>>> section = getSectionConsumiByDBName(consumiList, dbName);
section.clear();
section.put(dbName, consumi);
}
logger.trace(MrpConsumiHandlerService.class.getSimpleName() + " - Consumi: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
multiDBTransactionManager.closeAll();
}
private static boolean isGestioneAbilitata(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
String sql =
"SELECT CAST(COUNT(*) AS BIT)\n" +
@@ -234,7 +251,7 @@ public class MrpConsumiHandlerService {
public Map<String, List<MRPDailyConsumiDTO>> getConsumi() throws Exception {
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
if (!saveCache()) {
if (!saveCache() && !multiDBTransactionManager.getPrimaryDatasource().getDbName().equalsIgnoreCase("biolevante")) {
return getConsumi(multiDBTransactionManager);
} else {
HashMap<String, HashMap<String, Map<String, List<MRPDailyConsumiDTO>>>> inputMap = consumiCachedData;

View File

@@ -149,7 +149,7 @@ public class OrtoFruttaProductionService {
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 ({},{},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta,caratVarietaRaccolta),
Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta, caratVarietaRaccolta),
MtbPartitaMagCarat.class);
if (!UtilityList.isNullOrEmpty(datiPartita)) {
if (!UtilityString.streNull(dto.getOriginal().getLottoProduttore()).equalsIgnoreCase(UtilityString.streNull(dto.getLottoProduttore()))) {
@@ -205,7 +205,7 @@ public class OrtoFruttaProductionService {
"SETUP",
"SER_DOC_CAR");
//todo: caso da gestire - cambio fornitore del documento
if (dto.getOriginal() != null && dto.isCertificatoEdited()) {
DtbDoct oldDoc = new DtbDoct();
oldDoc
@@ -378,7 +378,7 @@ public class OrtoFruttaProductionService {
//alla creazione della bolla (DDT) creare documento di acquisto e scarico di materiale alla pianta
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()) && !UtilityBigDecimal.isNullOrZero(dto.getPrezzoFinale())) {
if (!UtilityBigDecimal.isNullOrZero(dto.getQtaCol()) && !UtilityBigDecimal.isNullOrZero(dto.getValUnt())) {
DtbOrdt ordAcq = getOrdineAcquistoCollegato(dto.getGestione(), UtilityLocalDate.localDateToDate(dto.getDataOrd()), dto.getNumOrd());
DtbDoct ddt = generaDdtAcq(dto, ordAcq, activityId);
DtbDoct slav = generaScaricoLav(dto, ordAcq, activityId);
@@ -464,6 +464,10 @@ public class OrtoFruttaProductionService {
.setCodMdep(ordAcq.getCodMdep())
;
BigDecimal qtaScarto = dto.getQtaCol().multiply(dto.getTassoRiduzione()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
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);
DtbDocr row = new DtbDocr();
row
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
@@ -471,8 +475,11 @@ public class OrtoFruttaProductionService {
.setDataOrd(UtilityLocalDate.localDateToDate(dto.getDataOrd()))
.setNumOrd(dto.getNumOrd())
.setRigaOrd(rigaOrd)
.setQtaDoc(dto.getQtaCol())
.setValUnt(dto.getPrezzoFinale())
.setQtaDoc(qtaDoc)
.setNumCnf(numCnf)
.setQtaCnf(qtaCnf)
.setValUnt(dto.getValUnt())
.setSconto5(dto.getIndiceVariazione().negate())
.setOperation(OperationType.INSERT);
slav.getDtbDocr().add(row);
@@ -528,7 +535,7 @@ public class OrtoFruttaProductionService {
.setAnnotazioni(String.format("CERT N. %d", dto.getNumDoc()))
;
BigDecimal qtaCnf = dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP);
DtbDocr rowPlus = new DtbDocr();
rowPlus
.setCodMart(ordAcq.getDtbOrdr().get(0).getCodMart())
@@ -538,15 +545,33 @@ public class OrtoFruttaProductionService {
.setRigaOrd(ordAcq.getDtbOrdr().get(0).getRigaOrd())
.setQtaDoc(dto.getQtaCol())
.setNumCnf(dto.getNumCnf())
.setQtaCnf(dto.getQtaCol().divide(dto.getNumCnf(), 3, RoundingMode.HALF_UP))
.setQtaCnf(qtaCnf)
.setPesoLordo(dto.getPesoLordoPedane())
.setValUnt(dto.getPrezzoFinale())
.setSconto8(dto.getTassoRiduzione())
.setValUnt(dto.getValUnt())
.setSconto5(dto.getIndiceVariazione().negate())
.setOperation(OperationType.INSERT);
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione()))
rowPlus.setNote("SCARTO: " + dto.getTassoRiduzione() + "%");
ddt.getDtbDocr().add(rowPlus);
if (!UtilityBigDecimal.isNullOrZero(dto.getTassoRiduzione())) {
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);
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())
.setNumCnf(numCnf.negate())
.setQtaCnf(qtaCnf)
.setPesoLordo(dto.getPesoLordoPedane())
.setValUnt(dto.getValUnt())
.setSconto5(dto.getIndiceVariazione().negate())
.setNote("SCARTO: " + dto.getTassoRiduzione() + "%")
.setOperation(OperationType.INSERT);
ddt.getDtbDocr().add(rowScarto);
}
entityProcessor.processEntity(ddt, true, multiDBTransactionManager);
UtilityEntity.throwEntityException(ddt);
return ddt;

View File

@@ -52,6 +52,16 @@ public class ProductionOrderDataHandlerService {
if (!UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer()) {
looperService.add(() -> this.internalCacheOrdiniLavorazione(true, inevasiOrdersCachedData), 5 * 1000, ProductionOrderDataHandlerService.class.getName());
}
if (UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer()) {
looperService.add(() -> {
try {
loadOrdiniProfile(false, "biolevante", "BIOLEVANTE", inevasiOrdersCachedData);
} catch (Exception e) {
throw new RuntimeException(e);
}
}, 5 * 1000, ProductionOrderDataHandlerService.class.getName());
}
}
@@ -144,9 +154,8 @@ public class ProductionOrderDataHandlerService {
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
if (
UtilityDebug.isIntegryServer()
|| UtilityDebug.isDebugExecution()
|| UtilityString.isNullOrEmpty(flagEvaso)
((UtilityDebug.isIntegryServer() || UtilityDebug.isDebugExecution()) && !multiDBTransactionManager.getPrimaryDatasource().getDbName().equalsIgnoreCase("biolevante")) ||
UtilityString.isNullOrEmpty(flagEvaso)
|| !flagEvaso.equalsIgnoreCase("I")
|| !isMESEnabled(multiDBTransactionManager)) {
return getOrdiniLavorazione(multiDBTransactionManager, flagEvaso, linee, startDate, endDate, codAnag, whereCond);

View File

@@ -11,6 +11,7 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.DtbDoct;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.service.SetupGest;
@@ -201,6 +202,7 @@ public class WMSMagazzinoBufferService {
.setCodMdep(mtbColtToUpdate.getCodMdep())
.setSaveDoc(true)
.setColli(Collections.singletonList(mtbColtToUpdate));
loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
DtbDoct doc = loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
entityProcessor.processEntity(doc,true,multiDBTransactionManager);
}
}

View File

@@ -52,6 +52,7 @@ import net.schmizz.sshj.sftp.SFTPClient;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -736,27 +737,50 @@ public class SystemController {
entityProcessor.processEntity(stbActivity, multiDBTransactionManager);
// se ok
String emailTo = "";
if (!UtilityString.isNullOrEmpty(emailPersRif)) {
String ccn = "", emailAssegnatoA;
if (!activity.getUserCreator().equals(activity.getUserName())) {
// SE SONO DIVERSI (E NON E' "CC") MANDA UN EMAIL AD
// "ASSEGNATO A"
String query =
"SELECT stb_user.e_mail\n" +
" FROM stb_user inner join jrl_flav_users on stb_user.user_name = jrl_flav_users.user_name\n" +
" WHERE jrl_flav_users.cod_jflav = " + UtilityDB.valueToString(activity.getUserName()) + " AND " +
"jrl_flav_users.flag_jflav_default = 'S'";
emailAssegnatoA = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (!UtilityString.isNullOrEmpty(emailAssegnatoA)) {
ccn = emailAssegnatoA;
}
}
notifica(stbActivity.getActivityId(), personaRif, emailPersRif, activity.getUserCreator(), ccn, notificationType, null, multiDBTransactionManager);
emailTo = emailPersRif;
}
List<String> listEmailCcn= new ArrayList<>();
if (!activity.getUserCreator().equals(activity.getUserName())) {
// SE SONO DIVERSI (E NON E' "CC") MANDA UN EMAIL AD
// "ASSEGNATO A"
String query =
"SELECT stb_user.e_mail\n" +
" FROM stb_user inner join jrl_flav_users on stb_user.user_name = jrl_flav_users.user_name\n" +
" WHERE jrl_flav_users.cod_jflav = " + UtilityDB.valueToString(activity.getUserName()) + " AND " +
"jrl_flav_users.flag_jflav_default = 'S'";
String emailAssegnatoA = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (!UtilityString.isNullOrEmpty(emailAssegnatoA)) {
if (UtilityString.isNullOrEmpty(emailTo))
emailTo = emailAssegnatoA;
else
listEmailCcn.add( emailAssegnatoA );
}
}
if (!activity.getActivityTypeId().equalsIgnoreCase("TICKET")) {
String query =
Query.format(
"select stb_user.e_mail\n" +
"from jtb_comt \n" +
"inner join jrl_flav_users on jtb_comt.cod_jflav_tec = jrl_flav_users.cod_jflav and jrl_flav_users.flag_jflav_default = 's'\n" +
"inner join stb_user on jrl_flav_users.user_name =stb_user.user_name " +
"where cod_jcom = %S ", activity.getCodJcom());
String emailResponsabile = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (!UtilityString.isNullOrEmpty(emailResponsabile) && !listEmailCcn.contains(emailResponsabile))
listEmailCcn.add(emailResponsabile);
}
if (!UtilityString.isNullOrEmpty(emailTo)) {
String ccn = StringUtils.join(listEmailCcn, ";");
notifica(stbActivity.getActivityId(), personaRif, emailPersRif, activity.getUserCreator(), ccn, notificationType, null, multiDBTransactionManager);
}
activity.setActivityId(stbActivity.getActivityId());
return ServiceRestResponse.createPositiveResponse(activity);
@@ -910,15 +934,11 @@ public class SystemController {
* Chiusura, 'F' - Note feedback, 'S' - Sollecito
*/
String htmlNotifyMail, subject, codAnag = "", includeFb = "", activityResultId, emailUtente = "", emailTo = "", query;
String htmlNotifyMail, subject, includeFb = "", emailTo = "", query, emailUtente = "";
String webUrl = "https://www.studioml.it/integry/";
String taskUrl = "https://task.studioml.it/";
String emailHelpdesk = "helpdesk@integry.it";
PreparedStatement info;
ResultSet res;
/** VALUTARE SE IL SEGUENTE CONTROLLO LO SI DEBBA FARE IN WINACT: */
// CONTROLLO PER INSERIRE LINK FEEDBACK DEL CLIENTE SE ...
includeFb = "";
@@ -929,16 +949,11 @@ public class SystemController {
// ... OPPURE AGG. A STATO "RISCONTRO CLIE."
query = " SELECT activity_result_id FROM stb_activity WHERE activity_id = "
+ UtilityDB.valueToString(activityID);
info = multiDBTransactionManager.prepareStatement(query);
res = info.executeQuery();
if (res.next()) {
activityResultId = res.getString(1);
if ("RISCONTRO CLIE.".equals(activityResultId)) {
includeFb = "&linkfb=1";
}
String activityResultId = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (UtilityString.equalsIgnoreCase(activityResultId, "RISCONTRO CLIE.")) {
includeFb = "&linkfb=1";
}
res.close();
info.close();
} else if ("F".equals(azione) || "S".equals(azione)) {
// RECUPERA EMAIL UTENTE PER INVIO NOTIFICA FEEDBACK NEGATIVO O
@@ -946,16 +961,12 @@ public class SystemController {
query = "SELECT e_mail " +
"FROM stb_activity INNER JOIN jtb_flav ON cod_jflav = user_name " +
"WHERE activity_id = " + UtilityDB.valueToString(activityID);
info = multiDBTransactionManager.prepareStatement(query);
res = info.executeQuery();
if (res.next()) {
emailUtente = res.getString(1);
}
emailUtente = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (emailUtente.length() == 0) {
emailUtente = emailHelpdesk;
}
res.close();
info.close();
}
URL url = new URL(webUrl + "mail_models/ticket_mail.php?act=" + azione + includeFb);
@@ -992,7 +1003,7 @@ public class SystemController {
}
if (!emailTo.isEmpty()) {
mailService.sendMailPrimary("noreply@integry.it", "Integry Ticketing", emailTo, null, ccn, subject, htmlNotifyMail, true, true, null, null, null);
mailService.sendMailPrimary("noreply@integry.it", "Integry Ticketing", emailTo, "", ccn, subject, htmlNotifyMail, true, true, null, null, null);
StbActivity activity = new StbActivity();
activity.setOperation(OperationType.NO_OP);
@@ -1014,13 +1025,7 @@ public class SystemController {
+ " vtb_clie_pers_rif.e_mail IS NULL " + "WHERE stb_activity.activity_id = "
+ UtilityDB.valueToString(activityID) + " AND "
+ " vtb_clie_pers_rif.e_mail IS NULL";
info = multiDBTransactionManager.prepareStatement(query);
res = info.executeQuery();
if (res.next())
codAnag = res.getString(1);
res.close();
info.close();
String codAnag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
String domainIntegry = "integry.it";
if (!UtilityString.isNullOrEmpty(codAnag) && !UtilityString.isNullOrEmpty(personaRif)

View File

@@ -0,0 +1,44 @@
package it.integry.ems.system.exchange.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.service.ExchangeBancheAziendaliImportService;
import it.integry.ems.system.exchange.service.ExchangePartiteMagazzinoImportService;
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;
@RestController
@Scope("request")
@RequestMapping("exchange/banche-aziendali/")
public class ExchangeBancheAziendaliImportController {
private final Logger logger = LogManager.getLogger();
@Autowired
private ExchangeBancheAziendaliImportService exchangeBancheAziendaliImportService;
@Autowired
private RequestDataDTO requestDataDTO;
@RequestMapping(value = "import", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importBancheAziendali(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDb,
@RequestParam() String profileDbExchange) throws Exception {
try (MultiDBTransactionManager internalDb = new MultiDBTransactionManager(profileDb);
MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(profileDbExchange)) {
exchangeBancheAziendaliImportService.importBancheAziendali(internalDb, exchangeDb,requestDataDTO);
}
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -0,0 +1,289 @@
package it.integry.ems.system.exchange.dto;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityInterface;
import it.integry.ems_model.base.EntityPropertyHolder;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.exception.EntityException;
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
import it.integry.ems_model.types.OperationType;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Connection;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class CertificatiValorizzatiDTO extends EntityBase implements EquatableEntityInterface<CertificatiValorizzatiDTO> {
private final static Logger logger = LogManager.getLogger();
@SqlField("data_doc")
private LocalDate dataDoc;
@SqlField("num_doc")
private Long numDoc;
@SqlField("id_pesata")
private String idPesata;
@SqlField("data_vers")
private LocalDateTime dataVers;
@SqlField("cod_mart")
private String codMart;
@SqlField("varieta")
private String varieta;
@SqlField("targa")
private String targa;
@SqlField("targa_rim")
private String targaRim;
@SqlField("cod_vvet")
private String codVvet;
@SqlField("cod_vdes")
private String codVdes;
@SqlField("cod_anag")
private String codAnag;
@SqlField("val_unt")
private BigDecimal valUnt;
@SqlField("lotto_produttore")
private String lottoProduttore;
@SqlField("cod_vzon")
private String codVzon;
@SqlField("peso_lordo_kg")
private BigDecimal pesoLordoKg;
@SqlField("peso_netto_kg")
private BigDecimal pesoNettoKg;
@SqlField("scarto_kg")
private BigDecimal scartoKg;
@SqlField("casse_scaricate")
private BigDecimal casseScaricate;
@SqlField("casse_rese")
private BigDecimal casseRese;
@SqlField("indice_variazione")
private BigDecimal indiceVariazione;
@SqlField("tasso_riduzione")
private BigDecimal tassoRiduzione;
public CertificatiValorizzatiDTO() {
super(logger);
}
public LocalDate getDataDoc() {
return dataDoc;
}
public CertificatiValorizzatiDTO setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Long getNumDoc() {
return numDoc;
}
public CertificatiValorizzatiDTO setNumDoc(Long numDoc) {
this.numDoc = numDoc;
return this;
}
public String getIdPesata() {
return idPesata;
}
public CertificatiValorizzatiDTO setIdPesata(String idPesata) {
this.idPesata = idPesata;
return this;
}
public LocalDateTime getDataVers() {
return dataVers;
}
public CertificatiValorizzatiDTO setDataVers(LocalDateTime dataVers) {
this.dataVers = dataVers;
return this;
}
public String getCodMart() {
return codMart;
}
public CertificatiValorizzatiDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getVarieta() {
return varieta;
}
public CertificatiValorizzatiDTO setVarieta(String varieta) {
this.varieta = varieta;
return this;
}
public String getTarga() {
return targa;
}
public CertificatiValorizzatiDTO setTarga(String targa) {
this.targa = targa;
return this;
}
public String getTargaRim() {
return targaRim;
}
public CertificatiValorizzatiDTO setTargaRim(String targaRim) {
this.targaRim = targaRim;
return this;
}
public String getCodVvet() {
return codVvet;
}
public CertificatiValorizzatiDTO setCodVvet(String codVvet) {
this.codVvet = codVvet;
return this;
}
public String getCodVdes() {
return codVdes;
}
public CertificatiValorizzatiDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public String getCodAnag() {
return codAnag;
}
public CertificatiValorizzatiDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public BigDecimal getValUnt() {
return valUnt;
}
public CertificatiValorizzatiDTO setValUnt(BigDecimal valUnt) {
this.valUnt = valUnt;
return this;
}
public String getLottoProduttore() {
return lottoProduttore;
}
public CertificatiValorizzatiDTO setLottoProduttore(String lottoProduttore) {
this.lottoProduttore = lottoProduttore;
return this;
}
public String getCodVzon() {
return codVzon;
}
public CertificatiValorizzatiDTO setCodVzon(String codVzon) {
this.codVzon = codVzon;
return this;
}
public BigDecimal getPesoLordoKg() {
return pesoLordoKg;
}
public CertificatiValorizzatiDTO setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoLordoKg = pesoLordoKg;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public CertificatiValorizzatiDTO setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getScartoKg() {
return scartoKg;
}
public CertificatiValorizzatiDTO setScartoKg(BigDecimal scartoKg) {
this.scartoKg = scartoKg;
return this;
}
public BigDecimal getCasseScaricate() {
return casseScaricate;
}
public CertificatiValorizzatiDTO setCasseScaricate(BigDecimal casseScaricate) {
this.casseScaricate = casseScaricate;
return this;
}
public BigDecimal getCasseRese() {
return casseRese;
}
public CertificatiValorizzatiDTO setCasseRese(BigDecimal casseRese) {
this.casseRese = casseRese;
return this;
}
public BigDecimal getIndiceVariazione() {
return indiceVariazione;
}
public CertificatiValorizzatiDTO setIndiceVariazione(BigDecimal indiceVariazione) {
this.indiceVariazione = indiceVariazione;
return this;
}
public BigDecimal getTassoRiduzione() {
return tassoRiduzione;
}
public CertificatiValorizzatiDTO setTassoRiduzione(BigDecimal tassoRiduzione) {
this.tassoRiduzione = tassoRiduzione;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CertificatiValorizzatiDTO)) return false;
CertificatiValorizzatiDTO that = (CertificatiValorizzatiDTO) o;
return Objects.equals(getDataDoc(), that.getDataDoc()) && Objects.equals(getNumDoc(), that.getNumDoc()) && Objects.equals(getIdPesata(), that.getIdPesata()) && Objects.equals(getDataVers(), that.getDataVers()) && Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getVarieta(), that.getVarieta()) && Objects.equals(getTarga(), that.getTarga()) && Objects.equals(getTargaRim(), that.getTargaRim()) && Objects.equals(getCodVvet(), that.getCodVvet()) && Objects.equals(getCodVdes(), that.getCodVdes()) && Objects.equals(getCodAnag(), that.getCodAnag()) && Objects.equals(getValUnt(), that.getValUnt()) && Objects.equals(getLottoProduttore(), that.getLottoProduttore()) && Objects.equals(getCodVzon(), that.getCodVzon()) && Objects.equals(getPesoLordoKg(), that.getPesoLordoKg()) && Objects.equals(getPesoNettoKg(), that.getPesoNettoKg()) && Objects.equals(getScartoKg(), that.getScartoKg()) && Objects.equals(getCasseScaricate(), that.getCasseScaricate()) && Objects.equals(getCasseRese(), that.getCasseRese()) && Objects.equals(getIndiceVariazione(), that.getIndiceVariazione()) && Objects.equals(getTassoRiduzione(), that.getTassoRiduzione());
}
@Override
public int hashCodeKey() {
return Objects.hash(getDataDoc(), getNumDoc());
}
@Override
public int hashCode() {
return Objects.hash(getDataDoc(), getNumDoc(), getIdPesata(), getDataVers(), getCodMart(), getVarieta(), getTarga(), getTargaRim(), getCodVvet(), getCodVdes(), getCodAnag(), getValUnt(), getLottoProduttore(), getCodVzon(), getPesoLordoKg(), getPesoNettoKg(), getScartoKg(), getCasseScaricate(), getCasseRese(), getIndiceVariazione(), getTassoRiduzione());
}
@Override
public boolean equalsKey(CertificatiValorizzatiDTO that) {
if (this == that) return true;
return Objects.equals(getDataDoc(), that.getDataDoc()) && Objects.equals(getNumDoc(), that.getNumDoc());
}
}

View File

@@ -0,0 +1,126 @@
package it.integry.ems.system.exchange.service;
import it.integry.ems.expansion.RunnableThrowable;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.GtbBancAzi;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@SuppressWarnings("rawtypes")
@Service
public class ExchangeBancheAziendaliImportService {
//TODO: To be remove, only for fast development
private final String ROSSOGARGANO_EXCHANGE_USER = "EXCHANGE";
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
@Autowired
private ExchangeImportDataManagerService exchangeImportDataManagerService;
private final Logger logger = LogManager.getLogger();
public void importBancheAziendali(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
boolean useTempTable = true;
try {
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.BancheAziendali, useTempTable);
final List<GtbBancAzi> exchangeImportedData = retrieveBanche(
exchangeMultiDb.getPrimaryConnection(),
true, false);
final List<GtbBancAzi> exchangeUpdatedData = retrieveBanche(
exchangeMultiDb.getPrimaryConnection(),
false, useTempTable);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(GtbBancAzi.class, exchangeImportedData, exchangeUpdatedData);
allData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
allData = allData.stream().filter(x -> x.getOperation() != OperationType.DELETE)
.collect(Collectors.toList());
final Exception[] firstExceptionToThrow = {null};
AtomicInteger importedCounter = new AtomicInteger();
List<RunnableThrowable> calls = new ArrayList<>();
for (EquatableEntityInterface dataToSave : allData) {
logger.debug("Importate {} banche aziendali di {}", importedCounter.incrementAndGet(), allData.size());
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (GtbBancAzi) dataToSave, useTempTable);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione della banca aziendale", ex);
internalMultiDb.rollbackAll();
exchangeMultiDb.rollbackAll();
}
}
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.BancheAziendali);
}
}
private List<GtbBancAzi> retrieveBanche(Connection connection,
boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String gtbBancAziOriginalName = "gtb_banc_azi";
String gtbBancAziTableName = gtbBancAziOriginalName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(connection,
"INSERT INTO " + gtbBancAziTableName +
" SELECT * FROM " + gtbBancAziOriginalName
);
}
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, GtbBancAzi.class,
gtbBancAziTableName, null, retrieveAlreadyImported);
}
private void singleUpdateImported(Connection connection, GtbBancAzi importedData, boolean useTempTable) throws Exception {
final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{
put("cod_banc_azi", importedData.getCodBancAzi());
}};
exchangeImportDataManagerService.updateImportedStatus(connection, "gtb_banc_azi", importedKey, useTempTable);
}
}

View File

@@ -8,6 +8,7 @@ import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.dto.CertificatiSinfoOneDTO;
import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.DtbDoct;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
@@ -115,7 +116,7 @@ public class ExchangeColliImportService {
allMtbColts.forEach(x -> {
x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation());
((MtbColt)x).getMtbColr().forEach(y -> y.setOperation(y.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : y.getOperation()));
((MtbColt) x).getMtbColr().forEach(y -> y.setOperation(y.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : y.getOperation()));
});
@@ -130,9 +131,25 @@ public class ExchangeColliImportService {
try (MultiDBTransactionManager exchangeMultiDbThread = new MultiDBTransactionManager(exchangeMultiDb.getPrimaryDatasource().getProfile(), false);
MultiDBTransactionManager internalMultiDbThread = new MultiDBTransactionManager(internalMultiDb.getPrimaryDatasource().getProfile(), false)) {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO);
singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), (MtbColt) dataToSave, testataTableName, useTempTable);
singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), (MtbColt) dataToSave, righeTableName, useTempTable);
MtbColt mtbColtToSave = (MtbColt) dataToSave;
if (mtbColtToSave.hasDocument() && mtbColtToSave.getOperation() == OperationType.DELETE) {
MtbColt mtbColtRemoveDocument = (MtbColt) mtbColtToSave.clone();
mtbColtRemoveDocument.setMtbColr(new ArrayList<>())
.setCodDtip(EmsRestConstants.NULL)
.setSerDoc(EmsRestConstants.NULL)
.setDataDoc(EmsRestConstants.DATE_NULL)
.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(mtbColtRemoveDocument, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO);
mtbColtToSave.setCodDtip(EmsRestConstants.NULL)
.setSerDoc(EmsRestConstants.NULL)
.setDataDoc(EmsRestConstants.DATE_NULL);
}
entityProcessor.processEntity(mtbColtToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDbThread, requestDataDTO);
singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), mtbColtToSave, testataTableName, useTempTable);
singleUpdateImported(exchangeMultiDbThread.getPrimaryConnection(), mtbColtToSave, righeTableName, useTempTable);
internalMultiDbThread.commitAll();
exchangeMultiDbThread.commitAll();
@@ -156,7 +173,7 @@ public class ExchangeColliImportService {
.findFirst()
.orElse(null);
if (firstErrorObjectIfPresent != null) throw ((Result.Error)firstErrorObjectIfPresent).getError();
if (firstErrorObjectIfPresent != null) throw ((Result.Error) firstErrorObjectIfPresent).getError();
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), colliSchemaType);

View File

@@ -24,7 +24,9 @@ public class ExchangeImportSchemaManagerService {
Articoli(4),
PartiteMagazzinoLavorazione(5),
VersamentoGrezzo(6),
CampiRaccolta(7);
CampiRaccolta(7),
BancheAziendali(8),
ValorizzazioneCertificati(9);
private final int value;
@@ -67,6 +69,8 @@ public class ExchangeImportSchemaManagerService {
put(SchemaType.PartiteMagazzinoLavorazione, Arrays.asList("mtb_partita_mag_lav"));
put(SchemaType.VersamentoGrezzo, Arrays.asList("mtb_colt_versamento_grezzo", "mtb_colr_versamento_grezzo"));
put(SchemaType.CampiRaccolta, Collections.singletonList("campi_raccolta"));
put(SchemaType.BancheAziendali, Arrays.asList("gtb_banc_azi"));
put(SchemaType.ValorizzazioneCertificati, Collections.singletonList("valorizzazione_certificati"));
}};
public void syncSchema(Connection connection, SchemaType schemaType, boolean createTempTablesToo) throws Exception {

View File

@@ -134,6 +134,10 @@ public class ExchangeSystemManagerService {
final ExchangeOrdiniImportService beanCampiRaccolta = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeOrdiniImportService.class);
beanCampiRaccolta.importCampiDiRaccolta(internalDb, exchangeDb, requestDataDTO);
break;
case BancheAziendali:
final ExchangeBancheAziendaliImportService beanBancheAziendali = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeBancheAziendaliImportService.class);
beanBancheAziendali.importBancheAziendali(internalDb, exchangeDb, requestDataDTO);
break;
}
}