Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user