Merge branch 'develop' into feature/Feature-ORDL

This commit is contained in:
2024-07-23 16:26:43 +02:00
63 changed files with 3197 additions and 777 deletions

View File

@@ -1,12 +1,13 @@
package it.integry.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target(FIELD)
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface PostContextAutowired {
}

View File

@@ -598,15 +598,13 @@ public class EmsController {
@RequestParam(value = EmsRestConstants.TYPE) String importType,
@RequestParam(value = EmsRestConstants.FORMAT) String importFormat,
@RequestParam(required = false, defaultValue = "true") boolean headless,
@RequestBody(required = false) ImportRequestDTO requestBody) {
@RequestBody(required = false) ImportRequestDTO requestBody) throws Exception {
ServiceRestResponse response;
try {
EntityImportResponse<List<EntityBase>> importResponse = emsServices.importEntity(importType, importFormat, requestBody, headless);
List<EntityBase> entities = importResponse.getResponse();
ServiceRestResponse response;
if (entities != null && entities.size() > 0 && Stream.of(entities).anyMatch(x -> x instanceof EntityBase)) {
List<MessageDTO> errorMessages = Stream.of(entities)
.filter(x -> x.getException() != null)
@@ -659,10 +657,6 @@ public class EmsController {
} else throw new Exception("Non ci sono dati da importare");
}
} catch (Exception e) {
response = ServiceRestResponse.createNegativeResponse(e);
logger.error("Import " + httpRequest.getRequestURI(), e.getMessage());
}
return response;
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.dto;
import com.fasterxml.jackson.annotation.JsonValue;
import it.integry.ems.report.dto.JasperDTO;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.MtbAartLink;
import it.integry.ems_model.entity.MtbUntMis;
import it.integry.ems_model.entity.StbActivityFile;
import it.integry.ems_model.entity._enum.IBaseEnum;
@@ -15,6 +16,8 @@ public class CreateZipDTO {
private List<StbActivityFile> listStbActivityFile;
private List<MtbAartLink> listMtbAartLink;
private String fileName;
private SaveMode saveMode = SaveMode.STB_FILES_ATTACHED;
@@ -39,6 +42,15 @@ public class CreateZipDTO {
return this;
}
public List<MtbAartLink> getListMtbAartLink() {
return listMtbAartLink;
}
public CreateZipDTO setListMtbAartLink(List<MtbAartLink> listMtbAartLink) {
this.listMtbAartLink = listMtbAartLink;
return this;
}
public String getFileName() {
return fileName;
}

View File

@@ -271,7 +271,7 @@ public class MigrationComponent {
"La migrazione " + migrationCode + " non è andata a buon fine sul DB " + advancedDataSource.getProfileName() + ". Controllare il log per ulteriori dettagli.",
e, new Date());
} catch (Exception ex) {
logger.error("MigrationService - Mail", e);
logger.error("MigrationService - Mail", ex);
}
}

View File

@@ -0,0 +1,38 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240711183409 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "ATTIVO", "S", "Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "COD_ANAG", null, "Codice anagrafico del vettore", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "COD_VVET", null, "Codice vettore", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "ELENCO_TIPI_DOC_DA_ESCLUDERE", null, "Elenco documenti da escludere", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "EMAIL_FOR_LOG", "test@integry.it", "Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "FILE_FILTER", null, "Inserire il criterio di filtro dei file o il nome del file specifio (seguire la sintassi di java)", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "GG_CANC_FILE", null, "Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "IMPORT_REST", "S", "Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "LISTENING", "N", "Se LISTENIG = 'N' la procedura di importazione non si potrà mai mettere in ascolto sulla directory perchè nella procedura vengono prese in considerazione più file.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "PATH_FILE", "\\\\SERVERPB\\DOCUMENTI\\EBC\\", "Directory contente i file da importare.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "PATH_FILE_IMPORTED", "\\\\SERVERPB\\DOCUMENTI\\EBC\\IMPORTED\\", "Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "SET_COND_ANNO_DOC", "N", "Se attivato nel ricarcare il documento oltre a cercare per data documento cerca anche il documento nell''anno. Possibili valori S/N", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "SET_COND_GESTIONE", "N", "Se impostato nel ricercare il documento viene impostata la condizione sulla gestione specificata in questa confiturazione (possibile valore V e A)", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "SET_COND_SERIE_DOC", "N", "Se impostato nella ricerca del documento viene impostata la condizione anche sul vettore (Attivare solo se il tracciato provedere la colonna della serie) Possibili valori S/N", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "SET_COND_VETTORE", "N", "Se impostato nel ricercare il documento imposta la condizione anche sul vettore, ma in tal caso si deve essere sicuri che tutti i documenti abbiamo il codice vettore associato altrimenti alcuni documenti del file non verrebbero riconosciuti, Possibili valori S/N", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "SET_ESLUDI_ONERI_ZERO", "S", "Se impostato a S, durante l''importazione le righe con oneri pari a zero nel file vengono escluse", false, null, false, false, false, false, false, null, false, null);
createSetup("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "TIPO_RIPARTIZIONE_COSTI_PER_PEDANA_A", "PESO", "Se il tipo di calcolo è a PEDANA allora si può decidere se la ripartizione dei costi deve essere fatta a pedana, a colli o a pezzi. E'' stato necessario perchè spesso il numero di pedane del vettore è diverso dal numero di pedane che calcoliamo noi nei documenti", false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240711183516 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "COD_ANAG", "F2815");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "COD_VVET", "233");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "ELENCO_TIPI_DOC_DA_ESCLUDERE", "D.D.T");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240711184223 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "TIPO_CALC", "PESO");
updateSetupValue("IMPORT_DOCUMENTI_TRASPORTO", "EBC", "TIPO_RIPARTIZIONE_COSTI_PER_PEDANA_A", null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,48 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240716105445 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (existsTable("stb_exchange_config"))
return;
executeStatement("CREATE TABLE stb_exchange_config\n" +
"(\n" +
" id BIGINT IDENTITY\n" +
" CONSTRAINT stb_exchange_config_pk\n" +
" PRIMARY KEY,\n" +
" description VARCHAR(MAX),\n" +
" internal_profile_db VARCHAR(MAX) NOT NULL,\n" +
" external_profile_db VARCHAR(MAX) NOT NULL,\n" +
" schedulation_cron VARCHAR(MAX) NOT NULL,\n" +
" created_at DATETIME DEFAULT GETDATE() NOT NULL,\n" +
" last_execution DATETIME,\n" +
" last_execution_error_message VARCHAR(MAX)\n" +
")");
executeStatement("CREATE TABLE dbo.stb_exchange_config_detail\n" +
"(\n" +
" id BIGINT IDENTITY\n" +
" CONSTRAINT stb_exchange_config_detail_pk\n" +
" PRIMARY KEY,\n" +
" stb_exchange_config_id BIGINT NOT NULL\n" +
" CONSTRAINT stb_exchange_config_detail_stb_exchange_config_id_fk\n" +
" REFERENCES dbo.stb_exchange_config (id),\n" +
" type INT NOT NULL,\n" +
" execution_order INT DEFAULT 0 NOT NULL\n" +
")");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,376 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240718125945 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateTrigger("t_UpdProgMagaInsT", "CREATE TRIGGER [dbo].[t_UpdProgMagaInsT]\n" +
" ON [dbo].[dtb_ordt]\n" +
" FOR INSERT\n" +
" AS\n" +
" DECLARE\n" +
" @ls_codMart VARCHAR(15),\n" +
" @ls_codComp VARCHAR(15),\n" +
" @ls_buffer VARCHAR(15),\n" +
" @ls_codTagl VARCHAR(15),\n" +
" @ls_codMdep VARCHAR(5),\n" +
" @ls_codCol VARCHAR(5),\n" +
" @ls_partitaMag VARCHAR(20),\n" +
" @ls_annotazioni VARCHAR(255),\n" +
" @ls_concatena VARCHAR(50),\n" +
" @ls_flagEvaso VARCHAR(1),\n" +
" @ls_flagAnnulla VARCHAR(1),\n" +
" @ls_gestione VARCHAR(1),\n" +
" @ls_articoloComposto VARCHAR(1),\n" +
" @ls_codProd VARCHAR(15),\n" +
" @ls_flagEvasoProd VARCHAR(1),\n" +
" @ls_codJcom VARCHAR(10),\n" +
" @ls_gestioneRif VARCHAR(1),\n" +
" @ls_descrizioneProd VARCHAR(40),\n" +
" @ls_descrEstesaProd VARCHAR(255),\n" +
" @ls_untMisProd VARCHAR(3),\n" +
" @ls_flagEvasoForzato VARCHAR(1),\n" +
" @ls_codAliq VARCHAR(5),\n" +
" @lc_qtaConf DECIMAL(15, 5),\n" +
" @lc_qtaAcc DECIMAL(15, 5),\n" +
" @lc_qtaCol DECIMAL(15, 5),\n" +
" @lc_qtaOrd DECIMAL(15, 5),\n" +
" @lc_qtaEvasa DECIMAL(15, 5),\n" +
" @lc_qtaAccComp DECIMAL(15, 5),\n" +
" @lc_qtaColComp DECIMAL(15, 5),\n" +
" @lc_qtaOrdComp DECIMAL(15, 5),\n" +
" @lc_qtaEvasaComp DECIMAL(15, 5),\n" +
" @lc_rapConv DECIMAL(15, 5),\n" +
" @lc_qtaOrdFor DECIMAL(15, 5),\n" +
" @lc_qtaImpLav DECIMAL(15, 5),\n" +
" @lc_qtaImpCli DECIMAL(15, 5),\n" +
" @lc_qtaStd DECIMAL(15, 5),\n" +
" @lc_percPrezzo DECIMAL(15, 3),\n" +
" @lc_sconto1 DECIMAL(15, 5),\n" +
" @lc_sconto2 DECIMAL(15, 5),\n" +
" @lc_sconto3 DECIMAL(15, 5),\n" +
" @lc_sconto4 DECIMAL(15, 5),\n" +
" @lc_totImponib DECIMAL(20, 5),\n" +
" @lc_qtaProd DECIMAL(15, 5),\n" +
" @lc_qtaEvasaProd DECIMAL(15, 5),\n" +
" @lc_valUnt DECIMAL(20, 5),\n" +
" @lc_cambioOrdAcq DECIMAL(20, 5),\n" +
" @lc_cambio DECIMAL(20, 5),\n" +
" @lc_rapConvProd DECIMAL(15, 5),\n" +
" @ll_numOrd INTEGER,\n" +
" @ll_rigaOrd INTEGER,\n" +
" @ll_rigaOrdRif INTEGER,\n" +
" @ll_numOrdRif INTEGER,\n" +
" @ll_cifreDecAcq INTEGER,\n" +
" @ldt_dataOrdRif DATETIME,\n" +
" @ldt_dataConsProd DATETIME,\n" +
" @ldt_dataOrd DATETIME,\n" +
" @ll_numFase INTEGER,\n" +
" @ll_totFasi INTEGER,\n" +
" @ls_codTcolUl VARCHAR(5),\n" +
" @lc_colliPedana DECIMAL(20, 5),\n" +
" @ls_errorMsg VARCHAR(255),\n" +
" @ls_codTcolUi VARCHAR(5),\n" +
" @li_posRiga INTEGER,\n" +
" @numCnf NUMERIC(20, 5),\n" +
" @flagQtaCnfFissa VARCHAR(1),\n" +
" @qtaOrd2 NUMERIC(20, 5),\n" +
" @qtaOrd3 NUMERIC(20, 5),\n" +
" @rapconv2 NUMERIC(20, 5),\n" +
" @rapconv3 NUMERIC(20, 5),\n" +
" @untOrd2 VARCHAR(3),\n" +
" @untOrd3 VARCHAR(3),\n" +
" @untOrd VARCHAR(3)\n" +
"\n" +
" /* Necessaria per connessione OLEDB */\n" +
" SET NOCOUNT ON\n" +
"\n" +
"/* Inserimento riga ordine di produzione */\n" +
" DECLARE\n" +
" csr_ordt_insert CURSOR FOR\n" +
" SELECT inserted.gestione,\n" +
" inserted.data_ord,\n" +
" inserted.num_ord,\n" +
" inserted.riga_ord_rif,\n" +
" inserted.cod_prod,\n" +
" dtb_ordt.flag_evaso_prod, /* legge il valore corretto di flag_evaso_prod*/\n" +
" inserted.flag_annulla,\n" +
" inserted.sconto1,\n" +
" inserted.sconto2,\n" +
" inserted.sconto3,\n" +
" inserted.sconto4,\n" +
" inserted.tot_imponib - inserted.tot_merce,\n" +
" inserted.qta_prod,\n" +
" inserted.cod_jcom,\n" +
" inserted.gestione_rif,\n" +
" inserted.data_ord_rif,\n" +
" inserted.num_ord_rif,\n" +
" inserted.qta_evasa_prod,\n" +
" inserted.rap_conv_prod,\n" +
" inserted.data_cons_prod,\n" +
" inserted.descrizione_prod,\n" +
" inserted.descr_estesa_prod,\n" +
" inserted.unt_mis_prod,\n" +
" inserted.flag_evaso_forzato,\n" +
" gtb_divi.cambio,\n" +
" inserted.note,\n" +
" inserted.partita_mag,\n" +
" inserted.cod_mdep,\n" +
" inserted.num_fase,\n" +
" inserted.tot_fasi,\n" +
" inserted.colli_pedana,\n" +
" inserted.cod_tcol_ul,\n" +
" inserted.cod_tcol_ui,\n" +
" inserted.num_cnf_prod\n" +
" FROM inserted,\n" +
" gtb_divi,\n" +
" dtb_ordt\n" +
" WHERE inserted.cod_divi = gtb_divi.cod_divi\n" +
" AND (dtb_ordt.gestione = inserted.gestione)\n" +
" AND (dtb_ordt.data_ord = inserted.data_ord)\n" +
" AND (dtb_ordt.num_ord = inserted.num_ord)\n" +
" OPEN csr_ordt_insert\n" +
" FETCH NEXT FROM csr_ordt_insert INTO @ls_gestione, @ldt_dataOrd, @ll_numOrd, @ll_rigaOrdRif,@ls_codProd, @ls_flagEvasoProd,\n" +
" @ls_flagAnnulla, @lc_sconto1, @lc_sconto2, @lc_sconto3, @lc_sconto4, @lc_totImponib,\n" +
" @lc_qtaProd, @ls_codJcom, @ls_gestioneRif, @ldt_dataOrdRif, @ll_numOrdRif,\n" +
" @lc_qtaEvasaProd, @lc_rapConvProd, @ldt_dataconsProd, @ls_descrizioneProd,\n" +
" @ls_descrEstesaProd, @ls_untMisProd, @ls_flagEvasoForzato, @lc_cambio, @ls_annotazioni,\n" +
" @ls_partitaMag,@ls_codMdep, @ll_numFase, @ll_totFasi,@lc_colliPedana ,@ls_codTcolUl, @ls_codTcolui, @numCnf;\n" +
" WHILE @@FETCH_STATUS = 0 BEGIN\n" +
" /*\n" +
" */\n" +
" IF @ls_gestione = 'L' AND @ls_gestioneRif = 'A' AND @ll_rigaOrdRif IS NOT NULL AND @ll_numFase = @ll_totFasi\n" +
" BEGIN\n" +
" /* SELECT @ls_errorMsg = \"cod_mart = \" + @ls_codProd + \" GESTIONE = \" + @ls_gestione + \" DATA = \" + CONVERT(varchar, @ldt_dataOrd, 111) + \" NUM. = \" + CONVERT(varchar, @ll_numOrd) + \" COLLI_PED = \" +CONVERT(varchar,@lc_colliPedana) + \" TIPO_PED \" + @ls_codTcolUL\n" +
" RAISERROR (@ls_errorMsg, 16, 1)*/\n" +
"\n" +
" SELECT @ls_codAliq = cod_aliq,\n" +
" @lc_qtaConf = qta_cnf / @lc_rapConvProd ,\n" +
" @flagQtaCnfFissa = flag_qta_cnf_fissa,\n" +
" @untOrd = mtb_aart.unt_mis,\n" +
" @untOrd2 = mtb_aart.unt_mis2,\n" +
" @untOrd3 = mtb_aart.unt_mis3,\n" +
" @rapConv2 = mtb_aart.rap_conv2,\n" +
" @rapConv3 = mtb_aart.rap_conv3\n" +
" FROM mtb_aart\n" +
" WHERE cod_mart = @ls_codProd\n" +
"\n" +
" IF @ls_untMisProd = @untOrd\n" +
" BEGIN\n" +
" SELECT @untOrd2 = @untOrd2\n" +
" IF @untOrd2 IS NOT NULL AND @rapconv2 <> 0\n" +
" SELECT @qtaOrd2 = ROUND(@lc_qtaProd / @rapconv2, 5)\n" +
"\n" +
" SELECT @untOrd3 = @untOrd3\n" +
" IF @untOrd3 IS NOT NULL AND @rapconv3 <> 0\n" +
" SELECT @qtaOrd3 = ROUND(@lc_qtaProd / @rapconv3, 5)\n" +
" END\n" +
" ELSE\n" +
" IF @ls_untMisProd = @untOrd2\n" +
" BEGIN\n" +
" SELECT @untOrd2 = @untOrd\n" +
" SELECT @qtaOrd2 = ROUND(@lc_qtaProd * @lc_rapConvProd, 5)\n" +
"\n" +
" SELECT @untOrd3 = @untOrd3\n" +
" IF @untOrd3 IS NOT NULL AND @rapconv3 <> 0\n" +
" SELECT @qtaOrd3 = ROUND(@lc_qtaProd * @lc_rapConvProd / @rapconv3, 5)\n" +
" END\n" +
" ELSE\n" +
" IF @ls_untMisProd = @untOrd3\n" +
" BEGIN\n" +
" SELECT @untOrd3 = @untOrd\n" +
" SELECT @qtaOrd3 = ROUND(@lc_qtaProd * @lc_rapConvProd, 5)\n" +
"\n" +
" IF @untOrd2 IS NOT NULL AND @rapconv2 <> 0\n" +
" SELECT @qtaOrd2 = ROUND(@lc_qtaProd * @lc_rapConvProd / @rapconv2, 5)\n" +
" END\n" +
"\n" +
"\n" +
" SELECT @lc_cambioOrdAcq = gtb_divi.cambio,\n" +
" @ll_cifreDecAcq = gtb_divi.cifre_dec\n" +
" FROM dtb_ordt,\n" +
" gtb_divi\n" +
" WHERE dtb_ordt.cod_divi = gtb_divi.cod_divi\n" +
" AND dtb_ordt.gestione = @ls_gestioneRif\n" +
" AND dtb_ordt.data_ord = @ldt_dataOrdRif\n" +
" AND dtb_ordt.num_ord = @ll_numOrdRif\n" +
"\n" +
" /*SELECT @lc_valUnt = round(@lc_totImponib / @lc_qtaProd / @lc_cambio * @lc_cambioOrdAcq, @ll_cifreDecAcq)*/\n" +
" SELECT @lc_valUnt = @lc_totImponib / @lc_qtaProd / @lc_cambio * @lc_cambioOrdAcq\n" +
" IF @lc_valUnt IS NULL SELECT @lc_valUnt = 0\n" +
" IF @ls_flagAnnulla <> 'N' SELECT @ls_flagEvasoProd = 'A'\n" +
"\n" +
" SELECT @li_posRiga = ISNULL(MAX(pos_riga), 0) + 1\n" +
" FROM dtb_ordr\n" +
" WHERE dtb_ordr.gestione = @ls_gestioneRif\n" +
" AND dtb_ordr.data_ord = @ldt_dataOrdRif\n" +
" AND dtb_ordr.num_ord = @ll_numOrdRif\n" +
"\n" +
" IF @numCnf IS NULL\n" +
" BEGIN\n" +
" SELECT @numCnf = CASE\n" +
" WHEN @lc_qtaConf <> 0 THEN CASE\n" +
" WHEN @flagQtaCnfFissa = 'N'\n" +
" THEN ROUND(@lc_qtaProd / @lc_qtaConf, 0)\n" +
" ELSE ROUND(@lc_qtaProd / @lc_qtaConf, 5) END\n" +
" ELSE 0 END\n" +
" END\n" +
" --SELECT @numCnf = case when @lc_qtaConf <> 0 then round(@lc_qtaProd / @lc_qtaConf, 0, 1) else 0 end \n" +
"\n" +
" \n" +
"\n" +
" declare @numCnfEvasa numeric(20,5)\n" +
" \n" +
" SELECT @numCnfEvasa = CASE\n" +
" WHEN @lc_qtaConf <> 0 THEN CASE\n" +
" WHEN @flagQtaCnfFissa = 'N'\n" +
" THEN ROUND(@lc_qtaEvasaProd / @lc_qtaConf, 0)\n" +
" ELSE ROUND(@lc_qtaEvasaProd / @lc_qtaConf, 5) END\n" +
" ELSE 0 END\n" +
" \n" +
"\n" +
" INSERT INTO dtb_ordr (gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" riga_ord,\n" +
" flag_evaso,\n" +
" data_cons,\n" +
" cod_mart,\n" +
" descrizione,\n" +
" unt_ord,\n" +
" rap_conv,\n" +
" qta_ord,\n" +
" unt_ord2,\n" +
" qta_ord2,\n" +
" unt_ord3,\n" +
" qta_ord3,\n" +
" qta_evasa,\n" +
" val_unt,\n" +
" sconto5,\n" +
" sconto6,\n" +
" sconto7,\n" +
" sconto8,\n" +
" cod_aliq,\n" +
" importo_riga,\n" +
" descrizione_estesa,\n" +
" cod_jcom,\n" +
" pos_riga,\n" +
" flag_evaso_forzato,\n" +
" perc_prov,\n" +
" val_prov,\n" +
" perc_ispe,\n" +
" val_ispe,\n" +
" perc_promo,\n" +
" val_promo,\n" +
" perc_oneri,\n" +
" val_oneri,\n" +
" qta_acc,\n" +
" qta_col,\n" +
" perc_gest,\n" +
" val_gest,\n" +
" qta_cnf,\n" +
" note,\n" +
" partita_mag,\n" +
" cod_mdep,\n" +
" colli_pedana,\n" +
" cod_tcol_ul,\n" +
" cod_tcol_ui,\n" +
" num_cnf,\n" +
" id_art,\n" +
" num_cnf_evasa)\n" +
" VALUES (@ls_gestioneRif,\n" +
" @ldt_dataOrdRif,\n" +
" @ll_numOrdRif,\n" +
" @ll_rigaOrdRif,\n" +
" @ls_flagEvasoProd,\n" +
" @ldt_dataConsProd,\n" +
" @ls_codProd,\n" +
" @ls_descrizioneProd,\n" +
" @ls_untMisProd,\n" +
" @lc_rapConvProd,\n" +
" @lc_qtaProd,\n" +
" @untOrd2,\n" +
" @qtaOrd2,\n" +
" @untOrd3,\n" +
" @qtaOrd3,\n" +
" @lc_qtaEvasaProd,\n" +
" @lc_valUnt,\n" +
" @lc_sconto1,\n" +
" @lc_sconto2,\n" +
" @lc_sconto3,\n" +
" @lc_sconto4,\n" +
" @ls_codAliq,\n" +
" @lc_totImponib,\n" +
" @ls_descrEstesaProd,\n" +
" @ls_codJcom,\n" +
" @li_posRiga,\n" +
" @ls_flagEvasoForzato,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" @lc_qtaConf,\n" +
" @ls_annotazioni,\n" +
" @ls_partitaMag,\n" +
" @ls_codMdep,\n" +
" @lc_colliPedana,\n" +
" @ls_codTcolUl,\n" +
" @ls_codTcolUi,\n" +
" @numCnf,\n" +
" @li_posRiga,\n" +
" @numCnfEvasa)\n" +
"\n" +
" IF @@ERROR <> 0 RETURN\n" +
" END\n" +
" FETCH NEXT FROM csr_ordt_insert INTO @ls_gestione, @ldt_dataOrd, @ll_numOrd, @ll_rigaOrdRif,@ls_codProd, @ls_flagEvasoProd,\n" +
" @ls_flagAnnulla, @lc_sconto1, @lc_sconto2, @lc_sconto3, @lc_sconto4, @lc_totImponib,\n" +
" @lc_qtaProd, @ls_codJcom, @ls_gestioneRif, @ldt_dataOrdRif, @ll_numOrdRif,\n" +
" @lc_qtaEvasaProd, @lc_rapConvProd, @ldt_dataconsProd, @ls_descrizioneProd,\n" +
" @ls_descrEstesaProd, @ls_untMisProd, @ls_flagEvasoForzato, @lc_cambio, @ls_annotazioni,\n" +
" @ls_partitaMag,@ls_codMdep, @ll_numFase, @ll_totFasi,@lc_colliPedana ,@ls_codTcolUl, @ls_codTcolUi, @numCnf;\n" +
" END\n" +
" CLOSE csr_ordt_insert\n" +
" DEALLOCATE csr_ordt_insert\n" +
"\n" +
"/* corregge il valore di flag_evaso_prod, in base alla regola:\n" +
" le righe non annullate, in cui la quantità evasa è >= dell'ordinato > 0,\n" +
" sono da considerare evase\n" +
" Nota: le righe in cui ci sono valori nulli sui campi qta_evasa_prod, \n" +
" qta_prod, flag_evaso_prod non sono prese in considerazione\n" +
"*/\n" +
" UPDATE dtb_ordt\n" +
" SET flag_evaso_prod = 'E'\n" +
" FROM dtb_ordt,\n" +
" inserted\n" +
" WHERE (dtb_ordt.gestione = inserted.gestione)\n" +
" AND (dtb_ordt.data_ord = inserted.data_ord)\n" +
" AND (dtb_ordt.num_ord = inserted.num_ord)\n" +
" AND (dtb_ordt.flag_evaso_prod <> 'A')\n" +
" AND (dtb_ordt.qta_evasa_prod >= dtb_ordt.qta_prod)\n" +
" AND (dtb_ordt.qta_evasa_prod > 0) ;\n" +
" IF @@ERROR <> 0 RETURN\n" +
"/* Necessaria per connessione OLEDB */\n" +
" SET NOCOUNT OFF");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240718150503 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("INSERT INTO stb_gest_setup (key_section, value, tipo_setup, description, query_default, flag_sync, flag_user_view, flag_setup_depo, flag_setup_user_web, flag_tipo_json, flag_tipo_colore, gest_name, section) VALUES('SUGGEST_DATA_SCAD', 'N', NULL, 'Suggerisce la data di scadenza di una partita già esistente', (SELECT TOP 1 cod_query FROM stb_gest_setup_query WHERE query_default = 'SELECT ''S'' UNION ALL SELECT ''N'''), 'N', 'N', 'N', 'N', 'N', 'N', 'PICKING', 'SPEDIZIONE');");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,67 @@
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_20240719120302 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Carelli_Winact))
return;
createOrUpdateFunction("steup_getInevasi", "CREATE FUNCTION [dbo].[steup_getInevasi]\n" +
"( \n" +
" @codMdep varchar(5), @codJfas varchar(5), @dataIspezione datetime\n" +
")\n" +
"RETURNS TABLE \n" +
"AS\n" +
"RETURN \n" +
"with ordini as (\n" +
"select dtb_ordr.cod_mart, gtb_anag.part_iva\n" +
"from gestfood.dbo.dtb_ordt inner join gestfood.dbo.dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione \n" +
"and dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
"and dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
"inner join gestfood.dbo.gtb_anag on dtb_ordt.cod_anag = gtb_anag.cod_anag \n" +
"where dtb_ordt.gestione = 'A' \n" +
"and dtb_ordt.cod_mdep = @codMdep\n" +
"and dtb_ordr.data_cons between DateAdd(day, -8, @dataIspezione) and DateAdd(day, -1, Cast(GETDATE() as date))\n" +
"and dtb_ordr.flag_evaso = 'I'\n" +
"union\n" +
"select dtb_ordr.cod_mart, gtb_anag.part_iva\n" +
"from carelli.dbo.dtb_ordt inner join carelli.dbo.dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione \n" +
"and dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
"and dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
"inner join carelli.dbo.gtb_anag on dtb_ordt.cod_anag = gtb_anag.cod_anag \n" +
"where dtb_ordt.gestione = 'A' \n" +
"and dtb_ordt.cod_mdep = @codMdep\n" +
"and dtb_ordr.data_cons between DateAdd(day, -8, Cast(GETDATE() as date)) and DateAdd(day, -1, Cast(GETDATE() as date))\n" +
"and dtb_ordr.flag_evaso = 'I'\n" +
"union\n" +
"select dtb_ordr.cod_mart, gtb_anag.part_iva\n" +
"from panimal.dbo.dtb_ordt inner join panimal.dbo.dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione \n" +
"and dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
"and dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
"inner join panimal.dbo.gtb_anag on dtb_ordt.cod_anag = gtb_anag.cod_anag \n" +
"where dtb_ordt.gestione = 'A' \n" +
"and dtb_ordt.cod_mdep = @codMdep\n" +
"and dtb_ordr.data_cons between DateAdd(day, -8, Cast(GETDATE() as date)) and DateAdd(day, -1, Cast(GETDATE() as date))\n" +
"and dtb_ordr.flag_evaso = 'I' )\n" +
"\n" +
"select ordini.cod_mart\n" +
"from ordini inner join mtb_aart on ordini.cod_mart = mtb_aart.cod_mart\n" +
"inner join jrl_fasi_mtb_grup on jrl_fasi_mtb_grup.cod_mgrp = mtb_aart.cod_mgrp\n" +
"where jrl_fasi_mtb_grup.cod_jfas = @codJfas AND\n" +
"part_iva in (select value_string from dbo.ParseStringIntoArray((select dbo.getGestSetup('PVM', 'RILEVAZIONI_STEUP', 'ELENCO_FORN_INEVASI')), '|'))");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,140 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240719163828 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("CountAllegatiCommessa", "CREATE FUNCTION [dbo].[CountAllegatiCommessa](@codJcom VARCHAR(10), @userName VARCHAR(40))\n" +
" RETURNS INTEGER\n" +
"AS\n" +
"BEGIN\n" +
" DECLARE @countAllegati INTEGER\n" +
"\n" +
" SELECT @countAllegati = SUM(cnt)\n" +
" FROM (SELECT COUNT(file_name) AS cnt\n" +
" FROM stb_activity_file\n" +
" WHERE id IN (SELECT stb_activity.activity_id\n" +
" FROM jtb_comt\n" +
" INNER JOIN stb_activity ON jtb_comt.cod_jcom = stb_activity.cod_jcom AND\n" +
" stb_activity.parent_activity_id IS NULL\n" +
" INNER JOIN stb_activity_type\n" +
" ON stb_activity.activity_type_id =\n" +
" stb_activity_type.activity_type_id AND\n" +
" stb_activity_type.flag_tipologia = 'P'\n" +
" WHERE jtb_comt.cod_jcom = @codJcom)\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(stb_activity_file.file_name) AS cnt\n" +
" FROM stb_activity\n" +
" INNER JOIN stb_activity_file ON stb_activity.activity_id = stb_activity_file.id\n" +
" WHERE stb_activity.cod_jcom = @codJcom\n" +
" AND activity_type_id IN (SELECT activity_type_id\n" +
" FROM srl_activity_type_user\n" +
" INNER JOIN jrl_flav_users\n" +
" ON srl_activity_type_user.user_name = jrl_flav_users.user_name\n" +
" INNER JOIN wtb_users\n" +
" ON wtb_users.User_name =\n" +
" jrl_flav_users.user_name AND\n" +
" wtb_users.user_name = @userName)\n" +
" AND @userName IN (stb_activity.user_creator, stb_activity.user_name)\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(filename) AS cnt\n" +
" FROM dtb_doc_pdf\n" +
" INNER JOIN\n" +
" (SELECT dtb_doct.num_doc,\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.cod_jcom,\n" +
" dtb_doct.gestione,\n" +
" MAX(versione) AS versione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.num_ord_provv\n" +
" FROM dtb_doc_pdf\n" +
" INNER JOIN dtb_doct\n" +
" ON dtb_doct.data_doc = dtb_doc_pdf.data_doc AND\n" +
" dtb_doct.num_doc = dtb_doc_pdf.num_doc AND\n" +
" dtb_doct.cod_dtip = dtb_doc_pdf.cod_dtip AND\n" +
" dtb_doct.cod_anag = dtb_doc_pdf.cod_anag AND\n" +
" dtb_doct.ser_doc = dtb_doc_pdf.ser_doc\n" +
" INNER JOIN dtb_docr ON dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag\n" +
" LEFT OUTER JOIN dtb_ordt\n" +
" ON dtb_doct.gestione = dtb_ordt.gestione AND\n" +
" dtb_doct.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_doct.num_ord = dtb_ordt.num_ord\n" +
" WHERE (filecontent IS NOT NULL OR ref_uuid IS NOT NULL)\n" +
" GROUP BY dtb_doct.num_doc, dtb_doct.data_doc, dtb_doct.cod_dtip,\n" +
" dtb_doct.cod_anag, dtb_doct.ser_doc,\n" +
" dtb_doct.cod_jcom, dtb_doct.gestione, dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord, dtb_ordt.num_ord_provv) t\n" +
" ON dtb_doc_pdf.num_doc = t.num_doc AND\n" +
" dtb_doc_pdf.data_doc = t.data_doc AND\n" +
" dtb_doc_pdf.cod_dtip = t.cod_dtip AND\n" +
" dtb_doc_pdf.cod_anag = t.cod_anag AND\n" +
" dtb_doc_pdf.ser_doc = t.ser_doc AND\n" +
" dtb_doc_pdf.versione = t.versione\n" +
" WHERE cod_jcom = @codJcom\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(stb_files_attached.file_name) AS cnt\n" +
" FROM stb_files_attached,\n" +
" drl_ord_attached,\n" +
" dtb_ordt\n" +
" WHERE stb_files_attached.id_attach = drl_ord_attached.id_attach\n" +
" AND drl_ord_attached.gestione = dtb_ordt.gestione\n" +
" AND drl_ord_attached.data_ord = dtb_ordt.data_ord\n" +
" AND drl_ord_attached.num_ord = dtb_ordt.num_ord\n" +
" AND dtb_ordt.cod_jcom = @codJcom\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(DISTINCT stb_files_attached.file_name) AS cnt\n" +
" FROM stb_files_attached,\n" +
" drl_doc_attached,\n" +
" dtb_docr\n" +
" WHERE stb_files_attached.id_attach = drl_doc_attached.id_attach\n" +
" AND drl_doc_attached.cod_anag = dtb_docr.cod_anag\n" +
" AND drl_doc_attached.cod_dtip = dtb_docr.cod_dtip\n" +
" AND drl_doc_attached.data_doc = dtb_docr.data_doc\n" +
" AND drl_doc_attached.ser_doc = dtb_docr.ser_doc\n" +
" AND drl_doc_attached.num_doc = dtb_docr.num_doc\n" +
" AND dtb_docr.cod_jcom = @codJcom\n" +
"\n" +
" UNION ALL\n" +
" \n" +
" SELECT COUNT(mtb_aart_link.id_riga) AS cnt\n" +
" FROM mtb_aart_link\n" +
" WHERE cod_mart IN (SELECT DISTINCT Wor.cod_mart\n" +
" FROM Wdtb_ordr Wor\n" +
" INNER JOIN Wdtb_ordt Wot\n" +
" ON Wor.gestione = Wot.gestione AND Wor.data_ord = Wot.data_ord AND\n" +
" Wor.num_ord = Wot.num_ord\n" +
" AND Wot.serie = Wor.serie\n" +
" WHERE Wot.cod_jcom = @codJcom)) t\n" +
"\n" +
" RETURN @countAllegati\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,237 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240722092015 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateProcedure("MRP_UpdateQtaImpProx", "CREATE Procedure [dbo].[MRP_UpdateQtaImpProx](@elencoArticoli varchar(max) = null)\n" +
"AS \n" +
"--DECLARE @elencoarticoli VARCHAR(MAX) = 'CEBIO75DMB'\n" +
"--DROP TABLE #tmp\n" +
"\n" +
"SET NOCOUNT ON;\n" +
"DECLARE @tableart TABLE\n" +
" (\n" +
" cod_mart VARCHAR(15)\n" +
" );\n" +
"\n" +
"IF @elencoarticoli IS NOT NULL AND @elencoarticoli <> ''\n" +
" BEGIN\n" +
" INSERT INTO @tableart\n" +
" SELECT *\n" +
" FROM dbo.parsestringintoarray(@elencoarticoli, '|')\n" +
" END\n" +
"ELSE\n" +
" BEGIN\n" +
" INSERT INTO @tableart\n" +
" SELECT mtb_aart.cod_mart\n" +
" FROM mtb_aart\n" +
" INNER JOIN jtb_cicl ON mtb_aart.cod_mart = jtb_cicl.cod_mart\n" +
" WHERE mtb_aart.flag_stato = 'A'\n" +
" END;\n" +
"\n" +
"WITH imp_ordini AS (SELECT mtb_part.cod_mart,\n" +
" mtb_aart.unt_mis,\n" +
" CASE\n" +
" WHEN SUM(mtb_part.qta_imp_cli) > SUM(mtb_part.qta_esistente + mtb_part.qta_ord_for) THEN\n" +
" SUM(mtb_part.qta_imp_cli - (mtb_part.qta_esistente + mtb_part.qta_ord_for))\n" +
" ELSE 0 END AS qtadaprodurre,\n" +
" CASE\n" +
" WHEN SUM(mtb_part.qta_imp_cli) > SUM(mtb_part.qta_esistente + mtb_part.qta_ord_for) THEN\n" +
" SUM(mtb_part.qta_imp_cli - (mtb_part.qta_esistente + mtb_part.qta_ord_for)) /\n" +
" mtb_aart.qta_cnf\n" +
" ELSE 0 END AS numdaprodurre,\n" +
" SUM((mtb_part.qta_esistente + mtb_part.qta_ord_for) - mtb_part.qta_imp_cli) AS qta_disp\n" +
" \n" +
" FROM mtb_part\n" +
" INNER JOIN jtb_cicl ON mtb_part.cod_mart = jtb_cicl.cod_prod\n" +
" INNER JOIN mtb_aart ON mtb_part.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN @tableart a ON mtb_aart.cod_mart = a.cod_mart\n" +
" WHERE mtb_aart.flag_stato = 'A'\n" +
" GROUP BY mtb_part.cod_mart, mtb_aart.unt_mis, mtb_aart.qta_cnf\n" +
" HAVING SUM(mtb_part.qta_esistente + mtb_part.qta_ord_for) <> SUM(mtb_part.qta_imp_cli) \n" +
" \n" +
" \n" +
" )\n" +
" , imp_contratti AS ( SELECT c.cod_mart,\n" +
" ISNULL(SUM((qta_vend_contratto - qta_ord - qta_doc) /\n" +
" CASE WHEN c.rap_conv = 0 THEN 1 ELSE c.rap_conv END), 0) AS qtacontratto\n" +
" FROM vvw_contratti_vendita c\n" +
" INNER JOIN @tableart a ON c.cod_mart = a.cod_mart\n" +
" WHERE c.data_fine >= CAST(GETDATE() AS DATE)\n" +
" GROUP BY c.cod_mart\n" +
" HAVING ISNULL(SUM(qta_residua), 0) > 0)\n" +
" , imp_budget AS (SELECT b.cod_mart,\n" +
" SUM(qta_saldo) AS qta_bdg\n" +
" FROM ovw_budget_ordv b\n" +
" INNER JOIN @tableart a ON b.cod_mart = a.cod_mart\n" +
" WHERE CAST(GETDATE() AS DATE) BETWEEN b.data_iniz AND b.data_fine\n" +
" AND qta_saldo <> 0\n" +
" GROUP BY b.cod_mart)\n" +
" , tmp_impegni\n" +
" AS (SELECT ISNULL(ISNULL(imp_ordini.cod_mart, imp_contratti.cod_mart), imp_budget.cod_mart) AS cod_mart,\n" +
" SUM(ISNULL(imp_ordini.qtadaprodurre, 0)) AS qtadaprodurre,\n" +
" SUM(ISNULL(imp_ordini.numdaprodurre, 0)) AS numdaprodurre,\n" +
" SUM(ISNULL(imp_contratti.qtacontratto -\n" +
" ISNULL(CASE WHEN imp_ordini.qta_disp > 0 THEN imp_ordini.qta_disp ELSE 0 END, 0),\n" +
" 0)) AS qtacontratto,\n" +
" SUM(ISNULL(imp_budget.qta_bdg, 0)) AS qtabudget\n" +
" \n" +
" FROM imp_ordini\n" +
" FULL OUTER JOIN imp_contratti ON imp_ordini.cod_mart = imp_contratti.cod_mart\n" +
" FULL OUTER JOIN imp_budget ON imp_ordini.cod_mart = imp_budget.cod_mart\n" +
" \n" +
" GROUP BY ISNULL(ISNULL(imp_ordini.cod_mart, imp_contratti.cod_mart), imp_budget.cod_mart)\n" +
" HAVING SUM(ISNULL(imp_ordini.qtadaprodurre, 0)) <> 0\n" +
" OR SUM(ISNULL(imp_contratti.qtacontratto -\n" +
" ISNULL(CASE WHEN imp_ordini.qta_disp > 0 THEN imp_ordini.qta_disp ELSE 0 END, 0), 0)) <> 0\n" +
" OR SUM(ISNULL(imp_budget.qta_bdg, 0)) <> 0)\n" +
"\n" +
"SELECT materiali.cod_mart,\n" +
" materiali.cod_prod,\n" +
" jtb_fasi.cod_mdep_lav AS cod_mdep,\n" +
" SUM(qtadaprodurre * ((materiali.qta_prod * materiali.rap_conv) /\n" +
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod))) AS impegnatoprox,\n" +
" SUM(qtacontratto * ((materiali.qta_prod * materiali.rap_conv) /\n" +
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod))) AS impproxcontratto,\n" +
" SUM(qtabudget * ((materiali.qta_prod * materiali.rap_conv) /\n" +
" (jtb_cicl.qta_prod * jtb_cicl.rap_conv_prod))) AS impproxbudget,\n" +
" /*\n" +
" max(case when ord.gestione = 'L' THEN max_data_cons else null end ) as data_imp_prox,\n" +
" max(case when ord.gestione = 'A' THEN max_data_cons else null end ) as data_imp_prox_contr\n" +
" */\n" +
" IsNull(max(ORD.data_imp_prox), convert(date,GetDate())) as data_imp_prox,\n" +
" IsNull(max(ORD.data_imp_prox_contr), convert(date,GetDate())) as data_imp_prox_contr\n" +
"INTO #tmp\n" +
"FROM tmp_impegni\n" +
" INNER JOIN\n" +
" (\n" +
" SELECT cod_mart, descrizione_estesa, unt_mis_prod AS unt_doc, rap_conv_prod AS rap_conv, qta_prod, cod_prod\n" +
" FROM [dbo].getmaterialidistinta(NULL)\n" +
" WHERE cod_parent IS NOT NULL) materiali ON materiali.cod_prod = tmp_impegni.cod_mart\n" +
" INNER JOIN jtb_cicl ON materiali.cod_prod = jtb_cicl.cod_prod\n" +
" INNER JOIN jtb_fasi ON jtb_cicl.cod_jfas = jtb_fasi.cod_jfas \n" +
" LEFT OUTER JOIN (\n" +
" /* Modifcata da Massimo 10/07/24 la vecchia query creva quantità doppie in presenza di ordini L e A\n" +
" select cod_mart, dtb_ordt.gestione, MAX(dtb_ordr.data_cons) as max_data_cons\n" +
" from dtb_ordt inner join dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione\n" +
" and dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" and dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" where dtb_ordt.gestione <> 'V' AND\n" +
" dtb_ordt.flag_annulla = 'N' and\n" +
" dtb_ordt.flag_budget = 0 and\n" +
" dtb_ordt.flag_sospeso = 'N' and\n" +
" dtb_ordt.flag_evaso_forzato = 'N' and \n" +
" dtb_ordr.flag_evaso = 'I' \n" +
" group by cod_mart, dtb_ordt.gestione\n" +
" */\n" +
" Select isNull(ODL.cod_mart,ODA.cod_mart) as cod_mart, ODL.data_imp_prox, ODA.data_imp_prox_contr\n" +
" from \n" +
" (select cod_mart, dtb_ordt.gestione, MAX(dtb_ordr.data_cons) as data_imp_prox\n" +
" from dtb_ordt inner join dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione\n" +
" and dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" and dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" where dtb_ordt.gestione = 'L' AND\n" +
" dtb_ordt.flag_annulla = 'N' and\n" +
" dtb_ordt.flag_budget = 0 and\n" +
" dtb_ordt.flag_sospeso = 'N' and\n" +
" dtb_ordt.flag_evaso_forzato = 'N' and \n" +
" dtb_ordr.flag_evaso = 'I' \n" +
" group by cod_mart, dtb_ordt.gestione\n" +
" )ODL full outer join\n" +
" (\n" +
" select cod_mart, dtb_ordt.gestione, MAX(dtb_ordr.data_cons) as data_imp_prox_contr\n" +
" from dtb_ordt inner join dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione\n" +
" and dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" and dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" where dtb_ordt.gestione = 'A' AND\n" +
" dtb_ordt.flag_annulla = 'N' and\n" +
" dtb_ordt.flag_budget = 0 and\n" +
" dtb_ordt.flag_sospeso = 'N' and\n" +
" dtb_ordt.flag_evaso_forzato = 'N' and \n" +
" dtb_ordr.flag_evaso = 'I' \n" +
" \n" +
" group by cod_mart, dtb_ordt.gestione)\n" +
" ODA on ODA.cod_mart = ODL.cod_mart\n" +
" ) ORD ON materiali.cod_mart = ORD.cod_mart\n" +
"GROUP BY materiali.cod_prod,\n" +
" materiali.cod_mart,\n" +
" jtb_fasi.cod_mdep_lav\n" +
" \n" +
"SELECT cod_mart,\n" +
" cod_mdep,\n" +
" SUM(impegnatoprox) AS impegnatoprox,\n" +
" SUM(impproxcontratto) AS impproxcontratto,\n" +
" SUM(impproxbudget) AS impproxbudget,\n" +
" data_imp_prox,\n" +
" case when data_imp_prox_contr < data_imp_prox then data_imp_prox else data_imp_prox_contr end as data_imp_prox_contr\n" +
" --case when data_imp_prox_contr is null then isNull(data_imp_prox,convert(date,GetDate())) else data_imp_prox_contr end as data_imp_prox_contr\n" +
" --IIF( data_imp_prox is null or data_imp_prox < Cast(getdate() as date), Cast(getdate() as date), data_imp_prox) as data_imp_prox,\n" +
" --IIF( data_imp_prox_contr is null or isNull(data_imp_prox_contr,data_imp_prox) < Cast(getdate() as date), Cast(getdate() as date), data_imp_prox_contr) as data_imp_prox_contr \n" +
"INTO #tmpsum\n" +
"FROM #tmp\n" +
"WHERE cod_mdep IS NOT NULL\n" +
"GROUP BY cod_mart, cod_mdep,\n" +
" data_imp_prox,\n" +
" data_imp_prox_contr\n" +
"\n" +
"INSERT INTO mtb_part (cod_mart, cod_mdep, scorta_min, qta_esistente, qta_imp_cli, qta_imp_lav, qta_ord_for)\n" +
"SELECT cod_mart, cod_mdep, 0, 0, 0, 0, 0\n" +
"FROM #tmpsum t\n" +
"WHERE NOT EXISTS(SELECT * FROM mtb_part WHERE mtb_part.cod_mart = t.cod_mart AND mtb_part.cod_mdep = t.cod_mdep)\n" +
"\n" +
"IF @elencoarticoli IS NULL OR @elencoarticoli = ''\n" +
" UPDATE mtb_part SET qta_imp_prox = 0, qta_imp_prox_contr = 0, qta_imp_prox_bdg = 0, data_imp_prox = null, data_imp_prox_contr = null\n" +
"ELSE\n" +
" UPDATE mtb_part\n" +
" SET qta_imp_prox = 0,\n" +
" qta_imp_prox_contr = 0,\n" +
" qta_imp_prox_bdg = 0,\n" +
" data_imp_prox = null, \n" +
" data_imp_prox_contr = null \n" +
" WHERE cod_mart IN (SELECT cod_mart FROM #tmpsum)\n" +
"\n" +
"UPDATE mtb_part\n" +
"SET qta_imp_prox = q.impegnatoprox,\n" +
" qta_imp_prox_contr = q.impproxcontratto,\n" +
" qta_imp_prox_bdg = q.impproxbudget,\n" +
" data_imp_prox = DateAdd(day, 1, q.data_imp_prox), \n" +
" data_imp_prox_contr = DateAdd(day, 1, q.data_imp_prox_contr )\n" +
"FROM mtb_part\n" +
" INNER JOIN #tmpsum q ON mtb_part.cod_mdep = q.cod_mdep AND mtb_part.cod_mart = q.cod_mart\n" +
"\n" +
"IF EXISTS(SELECT *\n" +
" FROM #tmp\n" +
" WHERE cod_mdep IS NULL)\n" +
" BEGIN\n" +
"\n" +
"\n" +
" DECLARE @message VARCHAR(MAX), @email VARCHAR(MAX)\n" +
"\n" +
" SELECT @email = e_mail FROM stb_email WHERE flag_default = 'S';\n" +
"\n" +
" SET @message = 'Verificare i seguenti articoli: la fase non ha il deposito agganciato.' + CHAR(10) + CHAR(13)\n" +
" SELECT @message = @message +\n" +
" STUFF((SELECT ',' + cod_prod\n" +
" FROM #tmp\n" +
" WHERE cod_mdep IS NULL\n" +
" FOR XML PATH('')), 1, 1, '')\n" +
"\n" +
" EXECUTE [dbo].[sp_sendEmail] @email, 'helpdesk@integry.it', 'Errore Impegni Prossimi', @message\n" +
"\n" +
" END");
}
@Override
public void down() throws Exception {
}
}

View File

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

View File

@@ -0,0 +1,71 @@
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_20240722120944 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" +
" union all\n" +
" 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'))\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)))");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240722133058 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("COD_ALIS", "COD_ALIS", "SELECT cod_alis FROM atb_list where flag_attivo = 'S'");
createSetup("DATI_AZIENDA", "GIACENZA_DA_INV", "LISTINI_ACQUISTO", null, null, false, "COD_ALIS", false, false, false, false, false, null, true, "SELECT cod_alis FROM atb_list where flag_attivo = 'S'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1035,7 +1035,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
}
numColli = colliTot.toString();
if (sfusoTot.compareTo(BigDecimal.ZERO) > 0)
numColli = numColli + "+" + sfusoTot.toString();
numColli = numColli + "+" + sfusoTot;
} else {
int numColliLogistici = 0;
if (colli != null) {

View File

@@ -863,7 +863,7 @@ public class SalesRules extends QueryRules {
entity.getDataFine(),
entity.getCodVlis(),
entity.getCodMart(),
entity.getVersione()==null?0:entity.getVersione()
entity.getVersione() == null ? 0 : entity.getVersione()
);
HashMap<String, Object> datiPromo = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query);
@@ -1175,11 +1175,29 @@ public class SalesRules extends QueryRules {
return;
}
int indexOfLastPosizione = viaggiGiorno.indexOf(viaggiGiorno.stream()
.filter(viaggio -> !viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio()) && Objects.equals(viaggio.getPosizione(), vtbViaggi.getPosizione())).findFirst().orElse(null));
VtbViaggi lastDataViaggio = viaggiGiorno.stream()
.filter(viaggio -> viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio()))
.findFirst().orElse(null);
if (indexOfLastPosizione != -1) {
viaggiGiorno.add(indexOfLastPosizione, vtbViaggi);
if (lastDataViaggio != null) {
viaggiGiorno.remove(lastDataViaggio);
}
int indexOfViaggioConNuovaPos = viaggiGiorno.indexOf(viaggiGiorno.stream()
.filter(viaggio -> viaggio.getPosizione().equals(vtbViaggi.getPosizione())).findFirst().orElse(null));
if (indexOfViaggioConNuovaPos != -1) {
if (lastDataViaggio != null && vtbViaggi.getPosizione() > lastDataViaggio.getPosizione()) {
indexOfViaggioConNuovaPos += 1;
}
viaggiGiorno.add(indexOfViaggioConNuovaPos, vtbViaggi);
} else {
viaggiGiorno.add(vtbViaggi);
viaggiGiorno = Stream.of(viaggiGiorno)
.sortBy(VtbViaggi::getPosizione)
.toList();
}
Stream.of(viaggiGiorno)

View File

@@ -32,8 +32,8 @@ public class ScheduledOperationHandlerComponent {
private final Logger logger = LogManager.getLogger();
private HashMap<String, ScheduledFuture<?>> scheduledOperations = new HashMap<>();
private HashMap<String, DirectoryWatcher> directoryWatcherOperations = new HashMap<>();
private final HashMap<String, ScheduledFuture<?>> scheduledOperations = new HashMap<>();
private final HashMap<String, DirectoryWatcher> directoryWatcherOperations = new HashMap<>();
public void scheduleOperation(BaseAutomatedOperationDTO operationModel) throws Exception {

View File

@@ -669,6 +669,22 @@ public class EmsServices {
}
}
if (createZipDTO.getListMtbAartLink() != null && !createZipDTO.getListMtbAartLink().isEmpty()) {
List<MtbAartLink> mtbAartLinkList = createZipDTO.getListMtbAartLink().stream()
.peek(mtbAartLink -> mtbAartLink.setOperation(OperationType.SELECT_OBJECT))
.collect(Collectors.toList());
List<EntityBase> entityBases = Collections.unmodifiableList(entityProcessor.processEntityList(mtbAartLinkList, true));
UtilityEntity.throwEntitiesException(entityBases);
mtbAartLinkList = UtilityEntity.toCustomEntity(entityBases);
for (MtbAartLink mtbAartLink : mtbAartLinkList) {
UtilityZip.addFileToArchive(zos, mtbAartLink.getPathLink(), Base64.decodeBase64(mtbAartLink.getB64Content()));
}
}
if (baos.size() > 0) {
zos.close();
@@ -702,7 +718,9 @@ public class EmsServices {
activityFile.setOperation(OperationType.INSERT);
stbActivity.setStbActivityFile(new ArrayList<>());
stbActivity
.setActivityResultId("COMPLETATA")
.setStbActivityFile(new ArrayList<>());
stbActivity.getStbActivityFile().add(activityFile);

View File

@@ -10,7 +10,6 @@ import it.integry.ems.datasource.DataSource;
import it.integry.ems.dto.EntityPermissionsDTO;
import it.integry.ems.exception.InvalidPermissionsException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.model.ColumnMetadataDTO;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
@@ -33,8 +32,8 @@ import org.apache.logging.log4j.Logger;
import org.josql.Query;
import org.josql.QueryResults;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import java.io.StringWriter;
import java.sql.*;
@@ -45,7 +44,6 @@ import java.util.HashMap;
import java.util.List;
@Service
@Scope("request")
public class EntityProcessor {
private final Logger logger = LogManager.getLogger();
@@ -59,18 +57,6 @@ public class EntityProcessor {
@Autowired
private EntityPropertyHolder entityPropertyHolder;
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@Autowired
private MultiDBTransactionManager mDbTransactManager;
@Autowired
private RequestDataDTO requestDataDTO;
@Autowired
private EntityLoggerService entityLoggerService;
@Autowired
private EntityLoggerNewService entityLoggerNewService;
@@ -78,6 +64,7 @@ public class EntityProcessor {
private SettingsModel settingsModel;
public <T> T processEntity(EntityInterface entity, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
String username = "";
@@ -85,31 +72,42 @@ public class EntityProcessor {
username = requestDataDTO.getUsername();
}
return (T) processEntity(entity, true, false, username, multiDBTransactionManager, true, false);
return (T) processEntity(entity, true, false, username, multiDBTransactionManager, requestDataDTO, true, false);
}
public EntityBase processEntity(EntityInterface entity, boolean skipCommit, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
String username = "";
if (requestDataDTO != null && requestDataDTO.isValidUsername()) {
username = requestDataDTO.getUsername();
}
return (EntityBase) processEntity(entity, true, skipCommit, username, multiDBTransactionManager, true, false);
return (EntityBase) processEntity(entity, true, skipCommit, username, multiDBTransactionManager, requestDataDTO, true, false);
}
public EntityBase processEntity(EntityInterface entity, Boolean isSync,
boolean skipCommit, String username,
MultiDBTransactionManager mdb) throws Exception {
return (EntityBase) processEntity(entity, isSync, skipCommit, username, mdb, true, false);
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
return (EntityBase) processEntity(entity, isSync, skipCommit, username, mdb, requestDataDTO, true, false);
}
public EntityBase processEntity(EntityInterface entity, Boolean isSync,
boolean skipCommit, String username,
MultiDBTransactionManager mdb, RequestDataDTO requestDataDTO) throws Exception {
return (EntityBase) processEntity(entity, isSync, skipCommit, username, mdb, requestDataDTO, true, false);
}
public Object processEntity(EntityInterface entity, Boolean isSync,
boolean skipCommit, String username,
MultiDBTransactionManager mdb,
boolean completeEntity) throws Exception {
return processEntity(entity, isSync, skipCommit, username, mdb, completeEntity, false);
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
return processEntity(entity, isSync, skipCommit, username, mdb, requestDataDTO, completeEntity, false);
}
/**
@@ -126,7 +124,7 @@ public class EntityProcessor {
public Object processEntity(EntityInterface entity, Boolean isSync,
boolean skipCommit, String username,
MultiDBTransactionManager mdb,
MultiDBTransactionManager mdb, RequestDataDTO requestDataDTO,
boolean completeEntity, boolean overrideEntityChildCheck) throws Exception {
try {
@@ -139,13 +137,13 @@ public class EntityProcessor {
entity.setOperation(OperationType.NO_OP);
}
if (!overrideEntityChildCheck) this.checkEntityChildsUsage(entity, mdb);
if (!overrideEntityChildCheck) this.checkEntityChildsUsage(entity, mdb, requestDataDTO);
if (settingsModel.isEnablePermissionCheck() && !checkUserPermissions(entity))
if (settingsModel.isEnablePermissionCheck() && !checkUserPermissions(entity,mdb))
throw new InvalidPermissionsException();
if (entity.getOperation() == OperationType.NO_OP) {
processInternal(entity, isSync, mdb, completeEntity);
processInternal(entity, isSync, mdb, requestDataDTO, completeEntity);
} else if (entity.getOperation() == OperationType.SELECT_OBJECT) {
return entity.selectAndMergeEntity(mdb.getPrimaryConnection(), (EntityBase) entity);
//return entity;
@@ -155,7 +153,7 @@ public class EntityProcessor {
return entityList;
} else {
processInternal(entity, isSync, mdb, completeEntity);
processInternal(entity, isSync, mdb, requestDataDTO, completeEntity);
}
if (!skipCommit) {
@@ -174,7 +172,7 @@ public class EntityProcessor {
}
private void checkEntityChildsUsage(EntityInterface entityInterface, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
private void checkEntityChildsUsage(EntityInterface entityInterface, MultiDBTransactionManager multiDBTransactionManager, RequestDataDTO requestDataDTO) throws Exception {
boolean isMaster = entityPropertyHolder.isEntityMaster(((EntityBase) entityInterface).getClass());;
OperationType operationType = entityInterface.getOperation();
@@ -209,12 +207,12 @@ public class EntityProcessor {
}
}
private boolean checkUserPermissions(EntityInterface entity) throws Exception {
if (!UtilityUser.checkLocalUserExist(mDbTransactManager, entity.getUsername())) return true;
private boolean checkUserPermissions(EntityInterface entity, MultiDBTransactionManager multiDBTransactionManager) throws Exception {
if (!UtilityUser.checkLocalUserExist(multiDBTransactionManager, entity.getUsername())) return true;
List<EntityPermissionsDTO> results = UtilityUser.getUserPermissions(mDbTransactManager, entity.getUsername(), (EntityBase) entity);
List<EntityPermissionsDTO> results = UtilityUser.getUserPermissions(multiDBTransactionManager, entity.getUsername(), (EntityBase) entity);
if (results == null || results.size() == 0) return false;
if (results == null || results.isEmpty()) return false;
EntityPermissionsDTO firstPermission = results.get(0);
@@ -242,7 +240,7 @@ public class EntityProcessor {
}
private void processInternal(EntityInterface entity, Boolean isSync, MultiDBTransactionManager multiDBTransactionManager, boolean completeEntity) throws Exception {
private void processInternal(EntityInterface entity, Boolean isSync, MultiDBTransactionManager multiDBTransactionManager, RequestDataDTO requestDataDTO, boolean completeEntity) throws Exception {
DataSource currentDs = multiDBTransactionManager.getPrimaryDatasource();
Connection primaryDB = currentDs.getConnection();
String currentProfileDb = currentDs.getProfile();
@@ -415,6 +413,8 @@ public class EntityProcessor {
}
public List<EntityBase> processEntityList(List<? extends EntityBase> entities, boolean singleTransaction) throws Exception {
final MultiDBTransactionManager mDbTransactManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
return processEntityList(entities, null, true, singleTransaction, false, mDbTransactManager, true, false);
}
@@ -423,10 +423,14 @@ public class EntityProcessor {
}
public List<EntityBase> processEntityList(List<? extends EntityBase> entities, boolean isSync, boolean singleTransaction, boolean ordinaSuPriorita) throws Exception {
final MultiDBTransactionManager mDbTransactManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
return processEntityList(entities, null, isSync, singleTransaction, ordinaSuPriorita, mDbTransactManager, true, false);
}
public List<EntityBase> processEntityList(List<? extends EntityBase> entities, String username, boolean isSync, boolean singleTransaction, boolean ordinaSuPriorita) throws Exception {
final MultiDBTransactionManager mDbTransactManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
return processEntityList(entities, username, isSync, singleTransaction, ordinaSuPriorita, mDbTransactManager, true, false);
}
@@ -449,6 +453,9 @@ public class EntityProcessor {
MultiDBTransactionManager multiDBTransactionManager,
boolean completeEntity, boolean overrideEntityChildCheck) throws Exception {
final RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
if (UtilityString.isNullOrEmpty(username) && requestDataDTO != null && requestDataDTO.isValidUsername()) {
username = requestDataDTO.getUsername();
}
@@ -466,7 +473,7 @@ public class EntityProcessor {
EntityBase entity = entities.get(i);
entity.setTransactionGroupId(prevTransactionGroupId);
try {
EntityBase entityResult = (EntityBase) this.processEntity(entity, isSync, singleTransaction, username, multiDBTransactionManager, completeEntity, overrideEntityChildCheck);
EntityBase entityResult = (EntityBase) this.processEntity(entity, isSync, singleTransaction, username, multiDBTransactionManager, requestDataDTO, completeEntity, overrideEntityChildCheck);
prevTransactionGroupId = entity.getTransactionGroupId();
if (entityResult != null) {
entityList.add(entityResult);
@@ -489,7 +496,7 @@ public class EntityProcessor {
}
}
mDbTransactManager.commitAll();
multiDBTransactionManager.commitAll();
return entityList;
}

View File

@@ -42,7 +42,7 @@ public class MailTemplateService {
break;
}
htmlMailBody = htmlMailBody.replaceAll("#BANNER_BG_COLOR#", bannerBgColor);
htmlMailBody = htmlMailBody.replace("#BANNER_BG_COLOR#", bannerBgColor);
String title = mailTemplateData.getTitle();
@@ -58,8 +58,8 @@ public class MailTemplateService {
}
}
htmlMailBody = htmlMailBody.replaceAll("#MAIL_TITLE#", UtilityString.blankIfNull(title));
htmlMailBody = htmlMailBody.replaceAll("#MAIL_SUBTITLE#", UtilityString.blankIfNull(mailTemplateData.getSubtitle()));
htmlMailBody = htmlMailBody.replace("#MAIL_TITLE#", UtilityString.blankIfNull(title));
htmlMailBody = htmlMailBody.replace("#MAIL_SUBTITLE#", UtilityString.blankIfNull(mailTemplateData.getSubtitle()));
//Exceptions
@@ -74,11 +74,11 @@ public class MailTemplateService {
.forEach(x -> exceptionHtml.append(x.getMessage()).append("<br />"));
}
htmlMailBody = htmlMailBody.replaceAll("#MAIL_CONTENT#",
htmlMailBody = htmlMailBody.replace("#MAIL_CONTENT#",
UtilityString.blankIfNull(mailTemplateData.getContent()) + exceptionHtml);
htmlMailBody = htmlMailBody.replaceAll("#FOOTER_DATE#", CommonConstants.DATETIME_DMY_SLASHED_FORMATTER.format(UtilityLocalDate.getNowTime()));
htmlMailBody = htmlMailBody.replace("#FOOTER_DATE#", CommonConstants.DATETIME_DMY_SLASHED_FORMATTER.format(UtilityLocalDate.getNowTime()));
return htmlMailBody;
}

View File

@@ -22,11 +22,7 @@ public class SettingsHelper {
Map<String, LoggerConfig> loggers = config.getLoggers();
Iterator<LoggerConfig> loggerConfigIterator = loggers.values().iterator();
while (loggerConfigIterator.hasNext()) {
LoggerConfig loggerConfig = loggerConfigIterator.next();
for (LoggerConfig loggerConfig : loggers.values()) {
loggerConfig.setLevel(settingsModel.getLoggerConfiguration().getLevelEnum());
}

View File

@@ -57,7 +57,7 @@ public class AsyncHistoryManager {
private final AtomicReference<List<ExportHistoryGroupDTO>> currentlyInExecutionG = new AtomicReference<>(new ArrayList<>());
@PostContextConstruct
@PostContextConstruct(priority = 20)
public void init() {
this.looperService.add(this::consumeRetrieveQueue, 10 * 1000, "async-history-read");
this.looperService.add(this::consumeProcessedQueue, 2 * 1000, "async-history-save");

View File

@@ -309,7 +309,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
}
Optional<AvailableConnectionsModel> availableConnectionsModel = Stream.of(SettingsModel.getInstance().getAvailableConnections())
java.util.Optional<AvailableConnectionsModel> availableConnectionsModel = SettingsModel.getInstance().getAvailableConnections().stream()
.filter(x -> x.getProfileName().equalsIgnoreCase(profileDb))
.findFirst();

View File

@@ -29,10 +29,7 @@ import org.springframework.stereotype.Service;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.groupingBy;
@@ -79,7 +76,7 @@ public class RemoteSynchronizationSetupService {
publicationGroups.add(publicationGroupDTO);
final List<PublicationDTO> publications = stbPublicationsDetails.stream()
.filter(x -> x.getStbPublicationId() == stbPublication.getId())
.filter(x -> Objects.equals(x.getStbPublicationId(), stbPublication.getId()))
.map(PublicationDTO::fromStbPublicationDetail)
.collect(toList());
publicationGroupDTO.setPublications(publications);

View File

@@ -525,9 +525,8 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
String query = "SELECT " + columnList + " FROM " + entity.getTableName() + where;
HashMap<String, Object> datiDb = UtilityDB.executeSimpleQueryOnlyFirstRow(connection, query);
EntityBase entityDB = mergeEntityDBToObject(connection, datiDb, entity);
return entityDB;
return mergeEntityDBToObject(connection, datiDb, entity);
}
public List<? extends EntityBase> selectEntityRowList(Connection connection, EntityBase entity, Class<? extends EntityBase> rowClass, String tableName, String whereConds) throws IOException, FieldMissingException, IllegalAccessException, SQLException, DataConverterNotFoundException, InstantiationException {
@@ -1438,15 +1437,21 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
insertSQL.append(")");
String traceSql = insertSQL.toString();
try (SQLServerPreparedStatement insertBulkPs =
(SQLServerPreparedStatement) sqlServerConnection.prepareStatement(
insertSQL.toString(),
containsIdentity ? Statement.RETURN_GENERATED_KEYS : Statement.NO_GENERATED_KEYS)) {
for (int i = 1; i <= fieldsWithoutIdentityAndNotNull.size(); i++) {
insertBulkPs.setObject(i, fieldsWithoutIdentityAndNotNull.get(i - 1).getSecond());
final Object value = fieldsWithoutIdentityAndNotNull.get(i - 1).getSecond();
insertBulkPs.setObject(i, value);
// traceSql = traceSql.replaceFirst("\\?", UtilityDB.valueToString(value).replaceAll("\\$", "\\\\\\$"));
}
logger.trace("Query tracing: {}", traceSql);
long insertedRowCount = insertBulkPs.executeLargeUpdate();
if (insertedRowCount > 0 && containsIdentity) {
@@ -1507,7 +1512,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
ForeignKeyRules.chkConstraint(connection, this.getChkConstraintSql());
UniqueKeyRules.chkConstraint(connection, this);
if (campi.size() > 0) {
if (!campi.isEmpty()) {
String sql = "UPDATE " + getTableName() + " SET " + StringUtils.join(campi, ",");
@@ -1519,9 +1524,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter
sql += " WHERE " + whereCond;
if (logger.isTraceEnabled()) {
logger.trace("QUERY: " + sql);
}
logger.trace("Query tracing: {}", sql);
try {
PreparedStatement pstm = connection.prepareStatement(sql);

View File

@@ -6,14 +6,16 @@ import it.integry.ems_model.annotation.PK;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EquatableEntityInterface;
import org.kie.api.definition.type.PropertyReactive;
import it.integry.ems_model.annotation.FK;
import java.util.Objects;
@Master
@PropertyReactive
@Table(MtbAartMarchio.ENTITY)
@JsonTypeName(MtbAartMarchio.ENTITY)
public class MtbAartMarchio extends EntityBase {
public class MtbAartMarchio extends EntityBase implements EquatableEntityInterface<MtbAartMarchio> {
public static final String ENTITY = "mtb_aart_marchio";
@@ -31,7 +33,33 @@ public class MtbAartMarchio extends EntityBase {
return marchio;
}
public void setMarchio(String marchio) {
public MtbAartMarchio setMarchio(String marchio) {
this.marchio = marchio;
return this;
}
@Override
public boolean equalsKey(MtbAartMarchio other) {
if (this == other) return true;
return Objects.equals(getMarchio(), other.getMarchio());
}
@Override
public boolean equalsContent(MtbAartMarchio other) {
if (this == other) return true;
return Objects.equals(getMarchio(), other.getMarchio());
}
@Override
public boolean equals(Object object) {
if (this == object) return true;
if (!(object instanceof MtbAartMarchio)) return false;
MtbAartMarchio that = (MtbAartMarchio) object;
return Objects.equals(getMarchio(), that.getMarchio());
}
@Override
public int hashCode() {
return Objects.hashCode(getMarchio());
}
}

View File

@@ -55,64 +55,72 @@ public class MtbGrup extends EntityBase implements EquatableEntityInterface<MtbG
return codMgrp;
}
public void setCodMgrp(String codMgrp) {
public MtbGrup setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
public MtbGrup setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getFlagValMag() {
return flagValMag;
}
public void setFlagValMag(String flagValMag) {
public MtbGrup setFlagValMag(String flagValMag) {
this.flagValMag = flagValMag;
return this;
}
public String getLogoWeb() {
return logoWeb;
}
public void setLogoWeb(String logoWeb) {
public MtbGrup setLogoWeb(String logoWeb) {
this.logoWeb = logoWeb;
return this;
}
public String getCriterioVal() {
return criterioVal;
}
public void setCriterioVal(String criterioVal) {
public MtbGrup setCriterioVal(String criterioVal) {
this.criterioVal = criterioVal;
return this;
}
public String getTipoMgrp() {
return tipoMgrp;
}
public void setTipoMgrp(String tipoMgrp) {
public MtbGrup setTipoMgrp(String tipoMgrp) {
this.tipoMgrp = tipoMgrp;
return this;
}
public List<MtbSgrp> getMtbSgrp() {
return mtbSgrp;
}
public void setMtbSgrp(List<MtbSgrp> mtbSgrp) {
public MtbGrup setMtbSgrp(List<MtbSgrp> mtbSgrp) {
this.mtbSgrp = mtbSgrp;
return this;
}
public List<MtbSfam> getMtbSfam() {
return mtbSfam;
}
public void setMtbSfam(List<MtbSfam> mtbSfam) {
public MtbGrup setMtbSfam(List<MtbSfam> mtbSfam) {
this.mtbSfam = mtbSfam;
return this;
}
public Boolean getFlagAttivo() {

View File

@@ -56,40 +56,45 @@ public class MtbSgrp extends EntityBase implements EquatableEntityInterface<MtbS
return codMgrp;
}
public void setCodMgrp(String codMgrp) {
public MtbSgrp setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public String getCodMsgr() {
return codMsgr;
}
public void setCodMsgr(String codMsgr) {
public MtbSgrp setCodMsgr(String codMsgr) {
this.codMsgr = codMsgr;
return this;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
public MtbSgrp setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getInclInStat() {
return inclInStat;
}
public void setInclInStat(String inclInStat) {
public MtbSgrp setInclInStat(String inclInStat) {
this.inclInStat = inclInStat;
return this;
}
public String getContoRimFin() {
return contoRimFin;
}
public void setContoRimFin(String contoRimFin) {
public MtbSgrp setContoRimFin(String contoRimFin) {
this.contoRimFin = contoRimFin;
return this;
}
public Integer getOrdinamento() {

View File

@@ -26,6 +26,9 @@ public class MtbTipi extends EntityBase implements EquatableEntityInterface<MtbT
@SqlField(value = "descrizione", maxLength = 40, nullable = false)
private String descrizione;
@SqlField(value = "flag_attivo", nullable = false, defaultObjectValue = "1")
private Boolean flagAttivo;
@EntityChild
private List<MtbStip> mtbStip;
@@ -68,6 +71,10 @@ public class MtbTipi extends EntityBase implements EquatableEntityInterface<MtbT
this.mtbTipiCarat = mtbTipiCarat;
}
public Boolean getFlagAttivo() { return flagAttivo;}
public void setFlagAttivo(Boolean flagAttivo) { this.flagAttivo = flagAttivo; }
@Override
protected void deleteChilds() throws Exception {
MtbTipiCarat mtbTipiCarat = new MtbTipiCarat();

View File

@@ -0,0 +1,137 @@
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.utility.Query;
import org.kie.api.definition.type.PropertyReactive;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Master()
@PropertyReactive()
@Table(value = StbExchangeConfig.ENTITY)
@JsonTypeName(value = StbExchangeConfig.ENTITY)
public class StbExchangeConfig extends EntityBase {
public final static String ENTITY = "stb_exchange_config";
private final static long serialVersionUID = 1L;
@PK()
@Identity()
@SqlField(value = "id", nullable = false)
private Long id;
@SqlField(value = "description", maxLength = -1, nullable = true)
private String description;
@SqlField(value = "internal_profile_db", maxLength = -1, nullable = false)
private String internalProfileDb;
@SqlField(value = "external_profile_db", maxLength = -1, nullable = false)
private String externalProfileDb;
@SqlField(value = "schedulation_cron", maxLength = -1, nullable = false)
private String schedulationCron;
@SqlField(value = "created_at", nullable = false)
private LocalDateTime createdAt;
@SqlField(value = "last_execution", nullable = true)
private LocalDateTime lastExecution;
@SqlField(value = "last_execution_error_message", maxLength = -1, nullable = true)
private String lastExecutionErrorMessage;
@EntityChild()
private List<StbExchangeConfigDetail> stbExchangeConfigDetail = new ArrayList<>();
public Long getId() {
return id;
}
public StbExchangeConfig setId(Long id) {
this.id = id;
return this;
}
public String getDescription() {
return description;
}
public StbExchangeConfig setDescription(String description) {
this.description = description;
return this;
}
public String getInternalProfileDb() {
return internalProfileDb;
}
public StbExchangeConfig setInternalProfileDb(String internalProfileDb) {
this.internalProfileDb = internalProfileDb;
return this;
}
public String getExternalProfileDb() {
return externalProfileDb;
}
public StbExchangeConfig setExternalProfileDb(String externalProfileDb) {
this.externalProfileDb = externalProfileDb;
return this;
}
public String getSchedulationCron() {
return schedulationCron;
}
public StbExchangeConfig setSchedulationCron(String schedulationCron) {
this.schedulationCron = schedulationCron;
return this;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public StbExchangeConfig setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
return this;
}
public LocalDateTime getLastExecution() {
return lastExecution;
}
public StbExchangeConfig setLastExecution(LocalDateTime lastExecution) {
this.lastExecution = lastExecution;
return this;
}
public String getLastExecutionErrorMessage() {
return lastExecutionErrorMessage;
}
public StbExchangeConfig setLastExecutionErrorMessage(String lastExecutionErrorMessage) {
this.lastExecutionErrorMessage = lastExecutionErrorMessage;
return this;
}
public List<StbExchangeConfigDetail> getStbExchangeConfigDetail() {
return stbExchangeConfigDetail;
}
public StbExchangeConfig setStbExchangeConfigDetail(List<StbExchangeConfigDetail> stbExchangeConfigDetail) {
this.stbExchangeConfigDetail = stbExchangeConfigDetail;
return this;
}
protected void deleteChilds() throws Exception {
StbExchangeConfigDetail stbExchangeConfigDetail = new StbExchangeConfigDetail();
stbExchangeConfigDetail.deleteAllEntities(connection, Query.format("stb_exchange_config_id = %s", getId()));
}
}

View File

@@ -0,0 +1,68 @@
package it.integry.ems_model.entity;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import org.kie.api.definition.type.PropertyReactive;
import com.fasterxml.jackson.annotation.JsonTypeName;
@PropertyReactive()
@Table(value = StbExchangeConfigDetail.ENTITY)
@JsonTypeName(value = StbExchangeConfigDetail.ENTITY)
public class StbExchangeConfigDetail extends EntityBase {
public final static String ENTITY = "stb_exchange_config_detail";
private final static long serialVersionUID = 1L;
@PK()
@Identity()
@SqlField(value = "id", nullable = false)
private Long id;
@SqlField(value = "stb_exchange_config_id", nullable = false)
@FK(tableName = StbExchangeConfig.ENTITY, columnName = "id")
@ImportFromParent("id")
private Long stbExchangeConfigId;
@SqlField(value = "type", nullable = false)
private Integer configType;
@SqlField(value = "execution_order", nullable = false)
private Integer executionOrder;
public Long getId() {
return id;
}
public StbExchangeConfigDetail setId(Long id) {
this.id = id;
return this;
}
public Long getStbExchangeConfigId() {
return stbExchangeConfigId;
}
public StbExchangeConfigDetail setStbExchangeConfigId(Long stbExchangeConfigId) {
this.stbExchangeConfigId = stbExchangeConfigId;
return this;
}
public Integer getConfigType() {
return configType;
}
public StbExchangeConfigDetail setConfigType(Integer configType) {
this.configType = configType;
return this;
}
public Integer getExecutionOrder() {
return executionOrder;
}
public StbExchangeConfigDetail setExecutionOrder(Integer executionOrder) {
this.executionOrder = executionOrder;
return this;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -13,6 +13,7 @@ import it.integry.ems.service.dto.LoginAziendaDTO;
import it.integry.ems.status.ServiceChecker;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.StbActivity;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityHashMap;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -91,7 +92,7 @@ public class SteUPController {
) {
ServiceRestResponse response = new ServiceRestResponse();
try {
response.setJsonObject(steUPService.getGrigliaPluRepo(codMdep, codJfas, activityTypeId, codCmac));
response.setJsonObject(steUPService.getGrigliaPluRepo(codMdep, codJfas, activityTypeId, codCmac, UtilityDate.getTodayWithoutTime()));
response.setEsito(EsitoType.OK);
} catch (Exception e) {
logger.error(request.getRequestURI(), e);

View File

@@ -55,6 +55,7 @@ import java.util.stream.Collectors;
import static it.integry.ems.order.dto.UserGroupENUM.RILEVATORE;
import static it.integry.ems.order.dto.UserGroupENUM.TECNICO;
import static java.util.stream.Collectors.groupingBy;
@Service
@Scope("request")
@@ -692,10 +693,24 @@ public class SteUPService {
barcodes = chkVolantino(codJfas, codMdep, barcodes, verificaVolantino, dataCreation);
}else if(activityTypeId.equalsIgnoreCase(tipoAttivitaRotturaStock)){
List<HashMap<String, Object>> pluRepo = getGrigliaPluRepo(codMdep,codJfas,activityTypeId,null);
List<HashMap<String, Object>> pluRepo = getGrigliaPluRepo(codMdep,codJfas,activityTypeId,null, dataCreation);
if(repartiFreschi != null && repartiFreschi.contains(codJfas)){
List<String> finalBarcodes = barcodes;
barcodes = pluRepo.stream().filter(a-> !finalBarcodes.contains(((String) a.get("barcode")))).map(a->(String) a.get("barcode")).collect(Collectors.toList());
barcodes = new ArrayList<>();
Map<String, List<HashMap<String, Object>>> pluByCodMarts = pluRepo.stream()
.collect(groupingBy(x -> x.get("cod_mart").toString()));
for (Map.Entry<String, List<HashMap<String, Object>>> entry : pluByCodMarts.entrySet()) {
String codMart = entry.getKey();
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 = pluRepo.stream().filter(a-> !finalBarcodes.contains(((String) a.get("barcode")))).map(a->(String) a.get("barcode")).collect(Collectors.toList());
}else{
barcodes = barcodes.stream().filter( a-> pluRepo.stream().map(x->x.get("barcode")).collect(Collectors.toList()).contains(a)).collect(Collectors.toList());
}
@@ -798,7 +813,7 @@ public class SteUPService {
return toReturn;
}
public List<HashMap<String, Object>> getGrigliaPluRepo(String codMdep, String codJfas, String activityTypeId, String codCmac) throws Exception {
public List<HashMap<String, Object>> getGrigliaPluRepo(String codMdep, String codJfas, String activityTypeId, String codCmac, Date dataCreation) 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))
@@ -862,7 +877,7 @@ public class SteUPService {
" AND DATEDIFF(DAY, data_validita, CAST(GETDATE() AS DATE)) < 7\n" +
" AND g.tipo_variazione = 'I'\n" +
" UNION " +
" SELECT cod_mart FROM dbo.steup_getInevasi("+ UtilityDB.valueToString(codMdep)+", " + UtilityDB.valueToString(codJfas)+"))";
" SELECT cod_mart FROM dbo.steup_getInevasi("+ UtilityDB.valueToString(codMdep)+", " + UtilityDB.valueToString(codJfas)+", " + UtilityDB.valueToString(dataCreation) + "))";
}
} else {
/*

View File

@@ -30,7 +30,7 @@ public class DocCostiTrasportoController {
List<ReturnDocCostiTrasportoDTO> docTrasp = new ArrayList<>();
try {
docTrasp = documentService.importDocumentiTrasportoPapagni(requestDataDTO);
docTrasp = documentService.importDocumentiTrasportoPapagni(requestDataDTO, "DOCUMENIT TRASPORTO", "PAPAGNI");
return ServiceRestResponse.createPositiveResponse(docTrasp);
@@ -55,9 +55,10 @@ public class DocCostiTrasportoController {
docTrasp = documentService.importDocumentiTrasportoMirarchi(requestDataDTO, type, format);
break;
case "STEF":
docTrasp = documentService.importDocumentiTrasportoStef(requestDataDTO);
docTrasp = documentService.importDocumentiTrasportoStef(requestDataDTO, type, format);
break;
case "EBC":
docTrasp = documentService.importDocumentiTrasportoEBC(requestDataDTO, type, format);
break;
case "ROTUNNO":
docTrasp = documentService.importDocumentiTrasportoROTUNNO(requestDataDTO, type, format);
@@ -65,9 +66,6 @@ public class DocCostiTrasportoController {
case "DIPA":
docTrasp = documentService.importDocumentiTrasportoDIPA(requestDataDTO, type, format);
break;
case "PAPAGNI":
docTrasp = documentService.importDocumentiTrasportoPapagni(requestDataDTO);
break;
}
return ServiceRestResponse.createPositiveResponse(docTrasp);

View File

@@ -0,0 +1,87 @@
package it.integry.ems.document.CostiTrasporto.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.models.auth.In;
import java.math.BigDecimal;
import java.util.Date;
public class DocTraspEBCDTO {
@JsonProperty("SUPPLEMENTO P/ASS")
private BigDecimal supplementoPASS;
@JsonProperty("PREAVVISO TELEFONICO")
private BigDecimal preavvisoTelefonico;
@JsonProperty("SUPPLEMENTO CARBURANTE")
private BigDecimal supplementoTelefonico;
@JsonProperty("GESTIONE EPAL")
private BigDecimal gestioneEPAL;
@JsonProperty("SERVIZIO NON STOP")
private BigDecimal servizioNonStop;
@JsonProperty("ASSICURAZIONE")
private BigDecimal assicurazione;
@JsonProperty("SOSTA ALLO SCARICO")
private BigDecimal sostaAlloScarico;
@JsonProperty("DIRITTO FISSO")
private BigDecimal dirittoFisso;
@JsonProperty("RIPREZZAMENTO FUORI SAGOMA")
private BigDecimal riprezzamentoFuoriSagoma;
@JsonProperty("RIPREZZAMENTO FUORI PESO")
private BigDecimal ripressamentoFuoriPeso;
@JsonProperty("ADDEBITO PRENOTAZIONE SU TESI")
private BigDecimal AddebitoPrenotazioneSuTesi;
@JsonProperty("ADD PREN SU MERCAREON/SMARTBAY")
private BigDecimal AddPrenSuMercareonSmartbay;
@JsonProperty("IMPORTO DOCUMENTO")
private BigDecimal importoDocumento;
@JsonProperty("SCARICO COOPERATIVE GDO")
private BigDecimal scaricoCooperativaGDO;
@JsonProperty("ZONA DISAGIATA")
private BigDecimal zonsDisagiata;
@JsonProperty("CODICE CLIENTE")
private String codiceCliente;
@JsonProperty("RAGIONE SOCIALE MITTENTE")
private String ragioneSocialeMittente;
@JsonProperty("LOCALITA")
private String localita;
@JsonProperty("N.DOCUMENTO")
private Integer numDocumento;
@JsonProperty("DATA DOCUMENTO")
private Date dataDocumento;
@JsonProperty("DATA SPEDIZIONE")
private Date dataSpedizione;
@JsonProperty("CONTR.")
private BigDecimal contr;
@JsonProperty("RIF.MITTENTE")
private String rifMittente;
@JsonProperty("TP")
private String tp;
@JsonProperty("NS.RIFERIMENTO")
private String nsRiferimento;
@JsonProperty("TR")
private String tr;
@JsonProperty("RIFERIMENTO OP LOGISTICA")
private String riferimentoOpLogistica;
@JsonProperty("DESTINATARIO/MITTENTE")
private String destinarioMittente;
@JsonProperty("LOCALITA DEST.")
private String localitaDest;
@JsonProperty("PART")
private String part;
@JsonProperty("ARR.")
private String arrotonamento;
@JsonProperty("N.BANCALI")
private Integer numBancali;
@JsonProperty("N.COLLI")
private Integer numColli;
@JsonProperty("PESO")
private BigDecimal peso;
@JsonProperty("VOLUME")
private BigDecimal volume;
@JsonProperty("NOLO")
private BigDecimal nolo;
@JsonProperty("COMMISSIONE CONTRASSEGNO")
private BigDecimal commissioneContrassegno;
@JsonProperty("SUPPLEMENTO ADR")
private BigDecimal supplementoADR;
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.document.CostiTrasporto.service;
import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.document.CostiTrasporto.dto.DocTraspEBCDTO;
import it.integry.ems.document.CostiTrasporto.dto.DocTraspImportDTO;
import it.integry.ems.document.CostiTrasporto.dto.DocTraspStefDTO;
import it.integry.ems.document.CostiTrasporto.dto.ReturnDocCostiTrasportoDTO;
@@ -66,8 +67,6 @@ public class DocCostiTrasporto {
private String sql;
private String STEF = "STEF", PAPAGNI = "PAPAGNI";
private Logger logger = LogManager.getLogger();
@NotNull
@@ -220,7 +219,7 @@ public class DocCostiTrasporto {
/*Se si tratta di STEF è necessario verificare se il cliente è tra quelli gestiti a PALLET ed in tal caso il tipo calcolo andrà cambiato,
purtroppo STEF non fornisce nel file per ogni cliente che tipo di costo è stato associato.
Siamo costretti a fare il controllo qui perchè nel file non abbiamo il codice cliente e solo in questo punto viene identificato*/
if (format.equalsIgnoreCase(STEF)){
if (format.equalsIgnoreCase("STEF")){
if (codAnag != null && elencoClientiTipoCalcPallet != null && elencoClientiTipoCalcPallet.contains(codAnag)){
tipoCalc = "PEDANE";
untMis = getUntMisFromTipoCalc(tipoCalc);
@@ -249,15 +248,15 @@ public class DocCostiTrasporto {
return docCostiTrasp;
}
public List<ReturnDocCostiTrasportoDTO> importDocumentiTrasportoPapagni(ImportRequestDTO requestDataDTO) throws Exception {
public List<ReturnDocCostiTrasportoDTO> importDocumentiTrasportoPapagni(ImportRequestDTO requestDataDTO, String type, String format) throws Exception {
Integer index = 0, numDoc = null;
String serDoc, codAnag, ragSocDB, codDtip, cittaDB, tipoCalc, format = PAPAGNI, type = "DOCUMENTI_TRASPORTO";
String serDoc, codAnag, ragSocDB, codDtip, cittaDB, tipoCalc;
List<ReturnDocCostiTrasportoDTO> docCostiTrasp = new ArrayList<>();
DataFormatter dataFormatter = new DataFormatter();
Date dataDoc;
Connection connect = multiDBTransactionManager.getPrimaryConnection();
String codVvet = UtilityString.emptyStr2Null(setupGest.getImportSetup(connect, type, format, "COD_VVET"));
String codVvet = UtilityString.emptyStr2Null(setupGest.getImportSetup(connect, "DOCUMENTI_TRASPORTO", "PAPAGNI", "COD_VVET"));
if (codVvet == null){
throw new Exception("CODICE VETTORE NON CONFIGURATO");
}
@@ -458,9 +457,8 @@ public class DocCostiTrasporto {
return returns;
}
public List<ReturnDocCostiTrasportoDTO> importDocumentiTrasportoStef(ImportRequestDTO requestDataDTO) throws Exception {
public List<ReturnDocCostiTrasportoDTO> importDocumentiTrasportoStef(ImportRequestDTO requestDataDTO, String type, String format) throws Exception {
Integer idRiga = 0;
String format = STEF, type = "DOCUMENTI_TRASPORTO";
List<ReturnDocCostiTrasportoDTO> docCostiTrasp = new ArrayList<>();
List<DocTraspImportDTO> listDocTrasp = new ArrayList<>();
HashMap<String, String> returns = new HashMap<>();
@@ -793,6 +791,84 @@ public class DocCostiTrasporto {
docCostiTrasp = checkAndImportDoc(listDocTrasp, format);
String pathFileImported = UtilityString.replaceSubString(requestDataDTO.getPathFile(), format, format + "\\imported");
UtilityFile.fileDelete(pathFileImported);
FileUtils.moveFile(new File(requestDataDTO.getPathFile()), new File(pathFileImported));
return docCostiTrasp;
}
public List<ReturnDocCostiTrasportoDTO> importDocumentiTrasportoEBC(ImportRequestDTO requestDataDTO, String type, String format) throws Exception {
Integer idRiga = 0;
List<ReturnDocCostiTrasportoDTO> docCostiTrasp = new ArrayList<>();
List<DocTraspImportDTO> listDocTrasp = new ArrayList<>();
HashMap<String, String> returns = new HashMap<>();
BigDecimal tassato = BigDecimal.ZERO;
Connection connect = multiDBTransactionManager.getPrimaryConnection();
String tipoCalc = UtilityString.emptyStr2Null(setupGest.getImportSetup(connect, type, format, "TIPO_CALC"));
if (tipoCalc == null){throw new Exception("E' NECESSARIO DEFINIRE LA TIPOLOGIA DI CALCOLO SE A PESO O A COLLI");}
String untMis = getUntMisFromTipoCalc(tipoCalc);
File tempFile = new File(requestDataDTO.getPathFile());
String csvEBC = FileUtils.readFileToString(tempFile);
CsvMapper<DocTraspEBCDTO> mapper = new CsvMapper<DocTraspEBCDTO>();
List<DocTraspEBCDTO> EBCList = mapper.deserialize(csvEBC, DocTraspEBCDTO.class, ";");
for (DocTraspEBCDTO doc : EBCList) {
/*String rifDoc = doc.gertNSRiferimento
BigDecimal totaleNolo = doc.getNolo().divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
BigDecimal tassatoCollo = doc.getNumColli().divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
BigDecimal tassatoPeso = doc.getPeso().divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
BigDecimal tassatoPallet = doc.getNumeroPallet();
idRiga ++;
returns = getSerNumDoc(rifDoc);
String numDocFile = returns.get("numDoc");
String serDoc = returns.get("serDoc");
Integer numDoc = null;
if (numDocFile != null && UtilityString.isNumber(numDocFile)){
numDoc = Integer.valueOf(numDocFile);
}
Date dataDoc = null;
try {
dataDoc = new SimpleDateFormat("yyyyMMdd").parse(doc.getDataDocumento());
} catch (Exception e){
logger.warn("Data documento non presente o non valida");
}
if (tipoCalc.compareTo("PESO") == 0){
tassato = tassatoPeso;
} else {
tassato = tassatoCollo;
}
String checkSerieDoc = "N";
if (doc.getCategoriaTariffa().compareTo("EM") == 0){
checkSerieDoc = "S";
}
DocTraspImportDTO docTrasp = new DocTraspImportDTO();
docTrasp.setDataDoc(dataDoc);
docTrasp.setNumDoc(numDoc);
docTrasp.setSerDoc(serDoc);
docTrasp.setRagSoc(doc.getRagSc());
docTrasp.setCitta(doc.getCitta());
docTrasp.setNolo(totaleNolo);
docTrasp.setTassato(tassato);
docTrasp.setTipoCalc(tipoCalc);
docTrasp.setUntMis(untMis);
docTrasp.setDataSped(dataDoc);
docTrasp.setRifDoc(rifDoc);
docTrasp.setIdRiga(idRiga);
docTrasp.setCheckSerDoc(checkSerieDoc);
docTrasp.setColli(tassatoCollo);
docTrasp.setPeso(tassatoPeso);
docTrasp.setPallet(tassatoPallet);
listDocTrasp.add(docTrasp);*/
}
docCostiTrasp = checkAndImportDoc(listDocTrasp, format);
String pathFileImported = UtilityString.replaceSubString(requestDataDTO.getPathFile(), format, format + "\\imported");
UtilityFile.fileDelete(pathFileImported);
FileUtils.moveFile(new File(requestDataDTO.getPathFile()), new File(pathFileImported));

View File

@@ -302,6 +302,27 @@ public class ProductionPlanService {
}
ordLavDTO.setPartite(saveProductionPlanDTO.getPartite());
sql = Query.format(
"SELECT num_ord, qta_prod\n" +
"FROM dtb_ordt\n" +
"WHERE cod_jcom = %s\n" +
" AND cod_prod = %s",
saveProductionPlanDTO.getCodJcom(),
saveProductionPlanDTO.getCodProd()
);
if (numOrdL == null || numOrdL == 0) {
HashMap<String, Object> ordData = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
if (ordData != null) {
numOrdL = UtilityHashMap.getValueIfExists(ordData, "num_ord");
qtaProd = (qtaProd != null ? qtaProd : BigDecimal.ZERO)
.add(UtilityHashMap.getValueIfExists(ordData, "qta_prod"));
}
}
if (numOrdL == null || numOrdL == 0) {
operation = OperationType.INSERT;

View File

@@ -66,6 +66,8 @@ public class AccettazioneOrtoFruttaDTO {
private String codDtip;
private BigDecimal valUnt;
private AccettazioneOrtoFruttaDTO original;
private String lottoProduttore;
private String modalitaRaccolta;
public String getGestione() {
@@ -619,4 +621,22 @@ public class AccettazioneOrtoFruttaDTO {
|| ! (this.original.getDataDocProvv().isEqual(this.dataDocProvv));
}
public String getLottoProduttore() {
return lottoProduttore;
}
public AccettazioneOrtoFruttaDTO setLottoProduttore(String lottoProduttore) {
this.lottoProduttore = lottoProduttore;
return this;
}
public String getModalitaRaccolta() {
return modalitaRaccolta;
}
public AccettazioneOrtoFruttaDTO setModalitaRaccolta(String modalitaRaccolta) {
this.modalitaRaccolta = modalitaRaccolta;
return this;
}
}

View File

@@ -35,10 +35,12 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Scope("request")
@@ -147,6 +149,52 @@ public class OrtoFruttaProductionService {
activityId = activity.getActivityId();
}
List<MtbPartitaMagCarat> datiPartita;
MtbPartitaMagCarat lottoProd = new MtbPartitaMagCarat();
MtbPartitaMagCarat modalitaRaccolta = new MtbPartitaMagCarat();
String caratLottoProd = "Lotto Produttore";
String caratModalitaRaccolta = "Modalita Raccolta";
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),
MtbPartitaMagCarat.class);
if (!UtilityList.isNullOrEmpty(datiPartita)) {
if (!UtilityString.streNull(dto.getOriginal().getLottoProduttore()).equalsIgnoreCase(UtilityString.streNull(dto.getLottoProduttore()))) {
lottoProd = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratLottoProd)).findFirst().orElse(new MtbPartitaMagCarat());
}
if (!UtilityString.streNull(dto.getOriginal().getModalitaRaccolta()).equalsIgnoreCase(UtilityString.streNull(dto.getModalitaRaccolta()))) {
modalitaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratModalitaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat());
}
}
}
lottoProd
.setCarat(caratLottoProd)
.setValCarat(dto.getLottoProduttore())
.setActivityId(activityId)
.setDataRilevazione(LocalDateTime.now())
.setOperation(OperationType.INSERT_OR_UPDATE);
modalitaRaccolta
.setCarat(caratModalitaRaccolta)
.setValCarat(dto.getModalitaRaccolta())
.setActivityId(activityId)
.setDataRilevazione(LocalDateTime.now())
.setOperation(OperationType.INSERT_OR_UPDATE);
datiPartita = new ArrayList<>();
datiPartita.add(lottoProd);
datiPartita.add(modalitaRaccolta);
MtbPartitaMag part = new MtbPartitaMag();
part
.setCodMart(dto.getCodMart())
.setPartitaMag(dto.getPartitaRaccolta())
.setOperation(OperationType.NO_OP);
part.setMtbPartitaMagCarat(datiPartita);
entityProcessor.processEntity(part, true, multiDBTransactionManager);
//Genero testata certificato di lavoro
String codDtipLavCar = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "CRUSCOTTO_PRODUZIONE",
"SETUP",
@@ -178,6 +226,7 @@ public class OrtoFruttaProductionService {
.setTarga(dto.getTarga())
.setCodMdep(dto.getCodMdepProd())
.setCodJfas(dto.getCodJfas())
.setDataCons(UtilityLocalDate.localDateTimeToDate(dto.getDataVers()))
.setCodProd(dto.getCodMart())
.setPartitaMag(dto.getPartitaRaccolta())
.setDataOrd(UtilityLocalDate.localDateToDate(dto.getDataOrd()))
@@ -226,7 +275,7 @@ public class OrtoFruttaProductionService {
.setOperation(OperationType.INSERT_OR_UPDATE);
if (!UtilityBigDecimal.isNullOrZero(dto.getNumCnf()))
row.setNumCnf(dto.getNumCnf())
.setQtaCnf(dto.getQtaCol().divide(dto.getNumCnf(),2, RoundingMode.HALF_UP));
.setQtaCnf(dto.getQtaCol().divide(dto.getNumCnf(), 2, RoundingMode.HALF_UP));
sql = "SELECT art_tcol.* from mtb_aart " +
" inner join mtb_tcol on mtb_tcol.cod_tcol = mtb_aart.cod_tcol_UI " +
@@ -404,7 +453,7 @@ public class OrtoFruttaProductionService {
.setDataDoc(UtilityLocalDate.localDateToDate(dto.getDataDocProvv()))
.setNumDoc(dto.getNumDocProvv())
.setCodAnag(dto.getCodAnag())
.setSerDoc(UtilityString.isNull(dto.getSerDocProvv(),serDoc))
.setSerDoc(UtilityString.isNull(dto.getSerDocProvv(), serDoc))
.setDataOrd(dataOrd)
.setNumOrd(dto.getNumOrd())
.setCodProd(dto.getCodMart())

View File

@@ -22,6 +22,9 @@ public class GiacenzaDTO {
@SqlField("cod_mdep")
private String codMdep;
@SqlField("incoming_stock")
private BigDecimal incomingStock;
public String getCodMart() {
return codMart;
}
@@ -66,4 +69,13 @@ public class GiacenzaDTO {
this.codMdep = codMdep;
return this;
}
public BigDecimal getIncomingStock() {
return incomingStock;
}
public GiacenzaDTO setIncomingStock(BigDecimal incomingStock) {
this.incomingStock = incomingStock;
return this;
}
}

View File

@@ -40,6 +40,7 @@ public class GiacenzaService {
EntityProcessor entityProcessor;
private final Logger logger = LogManager.getLogger();
public void popolaGiancezaDaInventario(String codMdepParm) throws Exception {
Date startDate = new Date();
@@ -60,10 +61,11 @@ public class GiacenzaService {
" AND key_section = 'ATTIVO'\n" +
" AND value = 'S'";
if (!UtilityString.isNullOrEmpty(codMdepParm)) sql +=" AND stb_gest_setup_depo.cod_mdep = " + UtilityDB.valueToString(codMdepParm);
if (!UtilityString.isNullOrEmpty(codMdepParm))
sql += " AND stb_gest_setup_depo.cod_mdep = " + UtilityDB.valueToString(codMdepParm);
List<String> depositi = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
List<RunnableThrowable> calls = new ArrayList<>();
for (String codMdep: depositi) {
for (String codMdep : depositi) {
calls.add(() -> {
try {
popolamentoDatiDeposito(codMdep, queryArt, startDate);
@@ -84,7 +86,7 @@ public class GiacenzaService {
logger.debug(String.format(GiacenzaService.class.getSimpleName() + " - Deposito %s - Cancellazione kit: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs", codMdep));
String dataParm = setupGest.getSetupDepo(multiDBTransactionManager.getPrimaryConnection(), "DATI_AZIENDA", "GIACENZA_DA_INV", "DATA_INIZ", codMdep);
Date dataIniz ;
Date dataIniz;
if (!UtilityString.isNullOrEmpty(dataParm))
dataIniz = UtilityString.parseDate(dataParm);
else
@@ -131,7 +133,7 @@ public class GiacenzaService {
}
private void cancellazioneKit(String codMdep ) throws Exception {
private void cancellazioneKit(String codMdep) throws Exception {
String sql = Query.format(
"SELECT g.cod_mdep, g.cod_mart\n" +
"FROM carelli_giacenza_prog g INNER JOIN mtb_aart ON g.cod_mart =mtb_aart.cod_mart \n" +
@@ -194,13 +196,13 @@ public class GiacenzaService {
"WHERE movimenti.data_reg >= CAST(ISNULL(giac.data_reg, GETDATE()) AS DATE) AND \n" +
" (giac.tipo_car is null OR giac.tipo_car <> 'R' OR (giac.tipo_car = 'R' AND movimenti.data_ins >= giac.data_reg)) \n" +
"GROUP BY movimenti.cod_mdep,\n " +
" art.cod_mart_mov,\n"+
" art.cod_mart_mov,\n" +
" giac.qta_iniz\n").replace("[COD_MDEP]", codMdep);
List<CarelliGiacenzaProg> carelliGiacenzaProgs = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, CarelliGiacenzaProg.class);
Stream.of(carelliGiacenzaProgs)
.forEach(x-> {
.forEach(x -> {
if (articoliSalvati.contains(x.getCodMart()))
x.setOperation(OperationType.UPDATE);
else {
@@ -230,7 +232,7 @@ public class GiacenzaService {
"FROM mtb_invent\n " +
"WHERE cod_mdep = %s AND \n" +
"data_inventario >= %s AND\n " +
(maxIdInv!=null?"id_inventario>"+maxIdInv + " AND \n":"") +
(maxIdInv != null ? "id_inventario>" + maxIdInv + " AND \n" : "") +
"flag_stato <> 2 \n " +
"AND EXISTS(SELECT * FROM mtb_invenr WHERE mtb_invent.id_inventario = mtb_invenr.id_inventario and mtb_invent.cod_mdep = mtb_invenr.cod_mdep ) " +
"AND NOT EXISTS(SELECT * FROM carelli_giacenza_prog WHERE mtb_invent.id_inventario = carelli_giacenza_prog.id_inventario AND mtb_invent.cod_mdep = carelli_giacenza_prog.cod_mdep )",
@@ -256,11 +258,11 @@ public class GiacenzaService {
idInventario, codMdep);
List<MtbInvenr> mtbInvenrs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbInvenr.class);
if (mtbInvenrs == null || mtbInvenrs.size() == 0 )
if (mtbInvenrs == null || mtbInvenrs.size() == 0)
continue;
List<CarelliGiacenzaProg> giacDaInv = new ArrayList<>();
for (MtbInvenr x: mtbInvenrs) {
for (MtbInvenr x : mtbInvenrs) {
CarelliGiacenzaProg carelliGiacenzaProg = new CarelliGiacenzaProg()
.setCodMdep(codMdep)
.setCodMart(x.getCodMart())
@@ -307,7 +309,7 @@ public class GiacenzaService {
datiArt = Stream.of(datiArt).filterNot(x -> elencoArt.contains(x)).toList();
giacDaInv = new ArrayList<>();
for(String codMart: datiArt) {
for (String codMart : datiArt) {
CarelliGiacenzaProg carelliGiacenzaProg = new CarelliGiacenzaProg()
.setCodMdep(codMdep)
.setCodMart(codMart)
@@ -389,7 +391,7 @@ public class GiacenzaService {
dataIniz, codMdep, codDtipRett);
List<MtbColt> mtbColts = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
if (mtbColts != null){
if (mtbColts != null) {
for (MtbColt collo : mtbColts) {
collo
.setCodDtip(codDtipRett)
@@ -404,7 +406,7 @@ public class GiacenzaService {
}
private void saveEntity(List<? extends EntityBase> entityBases) throws SQLException, IOException {
if ( entityBases.isEmpty()) return;
if (entityBases.isEmpty()) return;
try {
AtomicInteger counter = new AtomicInteger();
@@ -481,12 +483,8 @@ public class GiacenzaService {
public List<GiacenzaDTO> retrieveGiacenza(String codMdep) throws Exception {
String sql = "WITH art\n" +
" AS (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
" CASE\n" +
" WHEN mtb_aart.articolo_composto = 'S'\n" +
" AND mtb_comp.cod_comp IS NOT NULL\n" +
" THEN mtb_comp.cod_comp\n" +
" ELSE mtb_aart.cod_mart\n" +
" END AS cod_mart_mov,\n" +
" IIF(mtb_aart.articolo_composto = 'S'\n" +
" AND mtb_comp.cod_comp IS NOT NULL, mtb_comp.cod_comp, mtb_aart.cod_mart) AS cod_mart_mov,\n" +
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
" FROM mtb_aart\n" +
" LEFT OUTER JOIN mtb_comp\n" +
@@ -558,9 +556,7 @@ public class GiacenzaService {
" art.cod_mart_mov AS cod_mart,\n" +
" SUM(qta_col * art.qta_std) AS qta_col,\n" +
" data_ins,\n" +
" MAX(data_ins) OVER (\n" +
" PARTITION BY mtb_colt.cod_mdep,art.cod_mart_mov\n" +
" ) max_data_ins\n" +
" MAX(data_ins) OVER ( PARTITION BY mtb_colt.cod_mdep,art.cod_mart_mov) AS max_data_ins\n" +
" FROM mtb_colt\n" +
" INNER JOIN mtb_colr\n" +
" ON mtb_colt.gestione = mtb_colr.gestione\n" +
@@ -568,12 +564,9 @@ public class GiacenzaService {
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
" INNER JOIN (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
" CASE\n" +
" WHEN mtb_aart.articolo_composto = 'S'\n" +
" AND mtb_comp.cod_comp IS NOT NULL\n" +
" THEN mtb_comp.cod_comp\n" +
" ELSE mtb_aart.cod_mart\n" +
" END AS cod_mart_mov,\n" +
" IIF(mtb_aart.articolo_composto = 'S'\n" +
" AND mtb_comp.cod_comp IS NOT NULL,\n" +
" mtb_comp.cod_comp, mtb_aart.cod_mart) AS cod_mart_mov,\n" +
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
" FROM mtb_aart\n" +
" LEFT OUTER JOIN mtb_comp\n" +
@@ -584,22 +577,14 @@ public class GiacenzaService {
" AND mtb_colt.cod_mdep IN (" + UtilityDB.valueToString(codMdep) + ")\n" +
" GROUP BY art.cod_mart_mov, mtb_colt.data_collo, data_ins, mtb_colt.cod_mdep),\n" +
" selezione_giacenza\n" +
" AS (SELECT ISNULL(ip.cod_mdep, gp.cod_mdep) cod_mdep,\n" +
" ISNULL(ip.cod_mart, gp.cod_mart) cod_mart,\n" +
" AS (SELECT ISNULL(ip.cod_mdep, gp.cod_mdep) AS cod_mdep,\n" +
" ISNULL(ip.cod_mart, gp.cod_mart) AS cod_mart,\n" +
" ISNULL(ip.qta_col, gp.qta_car) AS qta_car,\n" +
" ISNULL(CASE\n" +
" WHEN gp.data_ins < ip.data_ins\n" +
" THEN 0\n" +
" ELSE gp.qta_scar\n" +
" END, 0) AS qta_scar,\n" +
" ISNULL(IIF(gp.data_ins < ip.data_ins, 0, gp.qta_scar), 0) AS qta_scar,\n" +
" ISNULL(ip.data_ins, gp.data_ins) AS data_ins,\n" +
" ISNULL(CAST(ip.data_ins AS DATE), gp.data_reg) AS data_reg,\n" +
" CASE\n" +
" WHEN ip.data_ins IS NULL\n" +
" THEN 0\n" +
" ELSE 1\n" +
" END AS is_invent,\n" +
" ip.data_ins last_rgiac\n" +
" IIF(ip.data_ins IS NULL, 0, 1) AS is_invent,\n" +
" ip.data_ins AS last_rgiac\n" +
" FROM carelli_giacenza_prog gp\n" +
" LEFT JOIN inventario_provvisorio ip\n" +
" ON ip.cod_mart = gp.cod_mart\n" +
@@ -607,40 +592,23 @@ public class GiacenzaService {
" AND max_data_ins = ip.data_ins\n" +
" AND (gp.data_ins < ip.data_ins)\n" +
" WHERE gp.cod_mdep IN (" + UtilityDB.valueToString(codMdep) + ")),\n" +
" mov\n" +
" AS (SELECT movimenti.cod_mdep,\n" +
" mov AS (SELECT movimenti.cod_mdep,\n" +
" art.cod_mart_mov AS cod_mart,\n" +
" SUM(movimenti.qta_car * qta_std) + ISNULL(giac.qta_car, 0) AS qta_car,\n" +
" SUM(movimenti.qta_scar * qta_std) + ISNULL(giac.qta_scar, 0) AS qta_scar,\n" +
" GETDATE() AS data_ins\n" +
" FROM movimenti\n" +
" INNER JOIN art\n" +
" ON movimenti.cod_mart = art.cod_mart\n" +
" INNER JOIN art ON movimenti.cod_mart = art.cod_mart\n" +
" LEFT OUTER JOIN selezione_giacenza giac\n" +
" ON giac.cod_mdep = movimenti.cod_mdep\n" +
" AND giac.cod_mart = art.cod_mart_mov\n" +
" ON giac.cod_mdep = movimenti.cod_mdep AND giac.cod_mart = art.cod_mart_mov\n" +
" WHERE (\n" +
" (movimenti.data_reg >= ISNULL(giac.data_reg, CAST(GETDATE() AS DATE)) AND\n" +
" (giac.data_ins IS NULL OR (movimenti.data_ins >= giac.data_ins))) OR\n" +
" (\n" +
" movimenti.data_reg >= ISNULL(giac.data_reg, CAST(GETDATE() AS DATE))\n" +
" AND (\n" +
" giac.data_ins IS NULL\n" +
" OR (movimenti.data_ins >= giac.data_ins)\n" +
" )\n" +
" )\n" +
" OR (\n" +
" (movimenti.tipo_car = 'W')\n" +
" AND (\n" +
" (\n" +
" giac.data_ins IS NULL\n" +
" OR (movimenti.data_ins >= giac.data_ins)\n" +
" )\n" +
" OR (\n" +
" is_invent = 0\n" +
" AND (\n" +
" movimenti.data_ins >= last_rgiac\n" +
" OR last_rgiac IS NULL\n" +
" )\n" +
" )\n" +
" (movimenti.tipo_car = 'W') AND (\n" +
" (giac.data_ins IS NULL OR (movimenti.data_ins >= giac.data_ins)) OR\n" +
" (is_invent = 1 AND (movimenti.data_ins >= last_rgiac)) OR\n" +
" (is_invent = 0 AND movimenti.data_ins >= ISNULL(giac.data_reg, CAST(GETDATE() AS DATE)))\n" +
" )\n" +
" )\n" +
" )\n" +
@@ -648,9 +616,9 @@ public class GiacenzaService {
" GROUP BY movimenti.cod_mdep, art.cod_mart_mov, giac.qta_car, giac.qta_scar),\n" +
" inv\n" +
" AS (SELECT ISNULL(r.cod_mart, k.cod_mart) AS cod_mart,\n" +
" ISNULL(mtb_aart.descrizione, '') descrizione,\n" +
" ISNULL(r.qta_car, ISNULL(k.qta_car, 0)) - ISNULL(r.qta_scar, ISNULL(k.qta_scar, 0)) qta_inv,\n" +
" ISNULL(k.data_ins, CAST(GETDATE() AS DATE)) data_inventario,\n" +
" ISNULL(mtb_aart.descrizione, '') AS descrizione,\n" +
" ISNULL(r.qta_car, ISNULL(k.qta_car, 0)) - ISNULL(r.qta_scar, ISNULL(k.qta_scar, 0)) AS qta_inv,\n" +
" ISNULL(k.data_ins, CAST(GETDATE() AS DATE)) AS data_inventario,\n" +
" ISNULL(r.cod_mdep, k.cod_mdep) AS cod_mdep\n" +
" FROM mov r\n" +
" INNER JOIN mtb_aart\n" +
@@ -687,6 +655,126 @@ public class GiacenzaService {
"FROM find_duplicates\n" +
"WHERE rownum = 1";
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GiacenzaDTO.class);
List<GiacenzaDTO> listGiacenza = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GiacenzaDTO.class);
String listiniAcquisto = setupGest.getSetup("DATI_AZIENDA", "GIACENZA_DA_INV", "LISTINI_ACQUISTO");
List<String> listini = Arrays.asList(listiniAcquisto.split("\\|"));
sql = "WITH incoming_stock_documenti AS (\n" +
"/*\n" +
"Estrazione dei documenti (bolle web) di merce consegnata\n" +
"*/\n" +
"\n" +
" SELECT wdtb_doct.cod_mdep,\n" +
" wdtb_docr.cod_mart,\n" +
" wdtb_docr.data_ord,\n" +
" wdtb_docr.num_ord,\n" +
" riga_ord,\n" +
" wdtb_doct.cod_anag,\n" +
" wdtb_docr.qta_doc * wdtb_docr.rap_conv AS qta_doc,\n" +
" wdtb_doct.flag_elaborato\n" +
" FROM wdtb_doct\n" +
" INNER JOIN wdtb_docr\n" +
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND\n" +
" wdtb_doct.data_doc = wdtb_docr.data_doc AND wdtb_doct.ser_doc = wdtb_docr.ser_doc AND\n" +
" wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
" WHERE wdtb_doct.data_ins >= dateadd(DAY, - 21, CAST(getdate() AS DATE))\n" +
" AND wdtb_doct.cod_mdep = " + UtilityDB.valueToString(codMdep) + ")\n" +
" , incoming_stock_ordini AS (\n" +
"/*\n" +
"Estrazione degli ordini d'acquisto in consegna\n" +
"*/\n" +
" SELECT r.cod_mdep,\n" +
" r.cod_mart,\n" +
" CASE\n" +
" WHEN r.data_cons = r.data_ord\n" +
" THEN CAST(getdate() AS DATE)\n" +
" ELSE r.data_cons\n" +
" END AS data_cons,\n" +
" r.qta_ord,\n" +
" r.data_ord,\n" +
" r.riga_ord,\n" +
" r.num_ord,\n" +
" cod_anag\n" +
" FROM dtb_ordt t\n" +
" INNER JOIN dtb_ordr r\n" +
" ON t.gestione = r.gestione\n" +
" AND t.data_ord = r.data_ord\n" +
" AND t.num_ord = r.num_ord\n" +
" WHERE\n" +
" -- ordini acquisto\n" +
" t.gestione = 'A'\n" +
" -- ordini non annullati\n" +
" AND t.flag_annulla = 'N'\n" +
" -- ordii non sospesi\n" +
" AND t.flag_sospeso = 'N'\n" +
" AND (\n" +
" -- ordini futuri\n" +
" (r.data_cons >= CAST(getdate() AS DATE))\n" +
" OR\n" +
" -- ordini fuori piano logistico (r.data_cons = r.data_ord), inevasi e fatti negli ultimi 3 giorni\n" +
" (\n" +
" r.data_cons = r.data_ord\n" +
" AND flag_evaso = 'I'\n" +
" AND r.data_ord >= dateadd(DAY, - 3, CAST(getdate() AS DATE))\n" +
" )\n" +
" )\n" +
" -- prendiamo i soli ordini del SECCO, sarà da modificare quando inizieranno ad ordinare anche altri (es. APULD)\n" +
" AND t.listino IN (" + UtilityDB.listValueToString(listini) + ")\n" +
" -- ordine non ancora evaso\n" +
" AND flag_evaso <> 'E'\n" +
" -- filtro solamente un Pdv\n" +
" AND r.cod_mdep = " + UtilityDB.valueToString(codMdep) + ")\n" +
" , incoming_stock_doc_consegnati AS (\n" +
"/*\n" +
"Estrazione dei documenti consegnati\n" +
"*/\n" +
" SELECT DISTINCT wdtb_docr.num_ord, wdtb_docr.data_ord, wdtb_doct.cod_anag\n" +
" FROM wdtb_doct\n" +
" INNER JOIN wdtb_docr\n" +
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND\n" +
" wdtb_doct.data_doc = wdtb_docr.data_doc AND wdtb_doct.ser_doc = wdtb_docr.ser_doc AND\n" +
" wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
" WHERE wdtb_doct.data_ins >= dateadd(DAY, - 7, CAST(getdate() AS DATE))\n" +
" AND wdtb_doct.flag_elaborato = 'N')\n" +
"\n" +
"-- Step 4) Unione delle estrazioni precedenti [MySQL]\n" +
"\n" +
"SELECT ISNULL(d.cod_mdep, o.cod_mdep) AS store_code,\n" +
" ISNULL(d.cod_mart, o.cod_mart) AS art_code,\n" +
" data_cons,\n" +
" SUM(ISNULL(qta_doc, qta_ord)) AS incoming_stock\n" +
"FROM incoming_stock_ordini o\n" +
" FULL OUTER JOIN incoming_stock_documenti d\n" +
" ON o.cod_mdep = d.cod_mdep AND o.cod_mart = d.cod_mart AND o.data_ord = d.data_ord AND\n" +
" o.num_ord = d.num_ord AND o.cod_anag = d.cod_anag AND o.riga_ord = d.riga_ord\n" +
" LEFT JOIN incoming_stock_doc_consegnati k\n" +
" ON o.num_ord = k.num_ord AND o.cod_anag = k.cod_anag AND o.data_ord = k.data_ord\n" +
"WHERE (flag_elaborato = 'I' OR flag_elaborato IS NULL)\n" +
" AND ((d.cod_mart IS NOT NULL) OR (d.cod_mart IS NULL AND k.num_ord IS NULL))\n" +
"GROUP BY ISNULL(d.cod_mdep, o.cod_mdep), ISNULL(d.cod_mart, o.cod_mart), data_cons, k.num_ord\n";
List<HashMap<String, Object>> merceInArrivo = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
if (listGiacenza != null) {
merceInArrivo
.forEach(merce -> {
String storeCode = (String) merce.get("store_code");
String artCode = (String) merce.get("art_code");
BigDecimal incomingStock = (BigDecimal) merce.get("incoming_stock");
listGiacenza.stream()
.filter(x -> x.getCodMart().equals(artCode) && x.getCodMdep().equals(storeCode))
.findFirst()
.ifPresent(x -> {
x.setIncomingStock(incomingStock);
});
});
return listGiacenza;
}
return null;
}
}

View File

@@ -9,6 +9,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@RestController
@Scope("request")
@RequestMapping("wms/partita-magazzino")
@@ -27,4 +31,13 @@ public class WMSPartitaMagazzinoController {
return ServiceRestResponse.createPositiveResponse(wmsPartitaMagazzinoService.retrievePartitaMag(codMart, partitaMag));
}
@RequestMapping(value = "retrieveAllPartitaMag", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse retrieveAllPartitaMag(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestBody List<String> codMarts,
@RequestParam Date dataScad) throws Exception {
return ServiceRestResponse.createPositiveResponse(wmsPartitaMagazzinoService.retrievePartitaMagList(codMarts, dataScad));
}
}

View File

@@ -2,10 +2,16 @@ package it.integry.ems.retail.wms.generic.dto;
import it.integry.ems_model.entity.MtbColt;
import java.time.LocalDate;
public class MagazzinoBufferVersamentoMaterialeRequestDTO {
private MtbColt inputMtbColt;
private String serCollo;
private Integer numCollo;
private LocalDate dataCollo;
public MtbColt getInputMtbColt() {
return inputMtbColt;
@@ -15,4 +21,32 @@ public class MagazzinoBufferVersamentoMaterialeRequestDTO {
this.inputMtbColt = inputMtbColt;
return this;
}
public String getSerCollo() {
return serCollo;
}
public MagazzinoBufferVersamentoMaterialeRequestDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public MagazzinoBufferVersamentoMaterialeRequestDTO setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public LocalDate getDataCollo() {
return dataCollo;
}
public MagazzinoBufferVersamentoMaterialeRequestDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
}

View File

@@ -95,6 +95,8 @@ public class WMSMagazzinoBufferService {
final MtbColt startUds = wmsLavorazioneService.createUDS(new CreateUDSRequestDTO()
.setSegno(-1)
.setSerCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getSerCollo())
.setNumCollo(magazzinoBufferVersamentoMaterialeRequestDTO.getNumCollo())
.setCodMdep(mtbColtRef.getCodMdep())
.setPosizione(posizione)
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO));
@@ -108,7 +110,7 @@ public class WMSMagazzinoBufferService {
.setQtaCnf(udcMtbColr.getQtaCnf())
.setPartitaMag(udcMtbColr.getPartitaMag()));
entityProcessor.processEntity(mtbColtRef,true,multiDBTransactionManager);
entityProcessor.processEntity(mtbColtRef, true, multiDBTransactionManager);
}
@@ -191,13 +193,13 @@ public class WMSMagazzinoBufferService {
.setOperation(OperationType.UPDATE);
entityList.add(mtbColtToUpdate);
entityProcessor.processEntityList(entityList, multiDBTransactionManager,true);
entityProcessor.processEntityList(entityList, multiDBTransactionManager, true);
LoadColliDTO loadColliDTO = new LoadColliDTO()
.setCodDtip(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"W_PORDI_RC","SETUP_DOCUMENTI","COD_DTIP_SCAR"))
.setCodDtip(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_SCAR"))
.setCodMdep(mtbColtToUpdate.getCodMdep())
.setSaveDoc(true)
.setColli(Collections.singletonList(mtbColtToUpdate));
loadColliService.createDocFromColli(multiDBTransactionManager,loadColliDTO);
loadColliService.createDocFromColli(multiDBTransactionManager, loadColliDTO);
}
}

View File

@@ -1,15 +1,19 @@
package it.integry.ems.retail.wms.generic.service;
import com.lmax.disruptor.util.DaemonThreadFactory;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.MtbPartitaMag;
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.UtilityInteger;
import it.integry.ems_model.utility.UtilityQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
@@ -34,4 +38,17 @@ public class WMSPartitaMagazzinoService {
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbPartitaMag.class);
}
public List<MtbPartitaMag> retrievePartitaMagList(List<String> codMarts, Date dataScad) throws Exception {
String sql = String.format(
"SELECT *\n" +
"FROM mtb_partita_mag\n" +
"WHERE data_scad >= %s\n" +
" AND cod_mart in (%s)",
UtilityDB.valueToString(dataScad),
UtilityDB.listValueToString(codMarts)
);
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbPartitaMag.class);
}
}

View File

@@ -1,7 +1,9 @@
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.ExchangeArticoliImportService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -21,14 +23,20 @@ public class ExchangeArticoliImportController {
@Autowired
private ExchangeArticoliImportService exchangeArticoliImportService;
@Autowired
private RequestDataDTO requestDataDTO;
@RequestMapping(value = "import", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importArticoli(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
@RequestParam(CommonConstants.PROFILE_DB) String profileDb,
@RequestParam() String profileDbExchange) throws Exception {
exchangeArticoliImportService.importArticoli();
try (MultiDBTransactionManager internalDb = new MultiDBTransactionManager(profileDb);
MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(profileDbExchange)) {
exchangeArticoliImportService.importArticoli(internalDb, exchangeDb,requestDataDTO);
}
return ServiceRestResponse.createPositiveResponse();
}

View File

@@ -1,7 +1,9 @@
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.ExchangeColliImportService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -22,13 +24,40 @@ public class ExchangeColliImportController {
@Autowired
private ExchangeColliImportService exchangeColliImportService;
@Autowired
private RequestDataDTO requestDataDTO;
@RequestMapping(value = "importLavorazione", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importColliLavorazione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
@RequestParam(CommonConstants.PROFILE_DB) String profileDb,
@RequestParam() String profileDbExchange) throws Exception {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileDb);
MultiDBTransactionManager multiDBTransactionManagerExchange = new MultiDBTransactionManager(profileDbExchange)) {
exchangeColliImportService.importColliLavorazione(multiDBTransactionManager, multiDBTransactionManagerExchange, requestDataDTO);
}
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "importVersamentoGrezzo", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importVersamentoGrezzo(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDb,
@RequestParam() String profileDbExchange) throws Exception {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileDb);
MultiDBTransactionManager multiDBTransactionManagerExchange = new MultiDBTransactionManager(profileDbExchange)) {
exchangeColliImportService.importVersamentoGrezzo(multiDBTransactionManager, multiDBTransactionManagerExchange, requestDataDTO);
}
exchangeColliImportService.importColliLavorazione();
return ServiceRestResponse.createPositiveResponse();
}
@@ -43,7 +72,8 @@ public class ExchangeColliImportController {
@RequestParam(required = false) String codVdes
) throws Exception {
LocalDate dataCertificato = LocalDate.parse(dataCert);
return ServiceRestResponse.createPositiveResponse(exchangeColliImportService.getCertificati(codAnag,
return ServiceRestResponse.createPositiveResponse(exchangeColliImportService.getCertificati(configuration,
codAnag,
dataCertificato,
codMart,
codVdes));

View File

@@ -0,0 +1,106 @@
package it.integry.ems.system.exchange.controller;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.system.exchange.dto.ExchangeUpdateRowsOrderRequestDTO;
import it.integry.ems.system.exchange.service.ExchangeConfigService;
import it.integry.ems.system.exchange.service.ExchangeImportSchemaManagerService;
import it.integry.ems_model.entity.StbExchangeConfig;
import it.integry.ems_model.entity.StbExchangeConfigDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.stream.Collectors;
@RestController
@Scope("request")
@RequestMapping("exchange/configuration/")
public class ExchangeConfigController {
@Autowired
private ExchangeConfigService exchangeConfigService;
@Autowired
private SettingsModel settingsModel;
@RequestMapping(value = "available-profiles", method = RequestMethod.GET)
public ServiceRestResponse retrieveAvailableProfiles(
@RequestParam(defaultValue = "true") boolean onlyInternal) throws Exception {
return ServiceRestResponse.createPositiveResponse(settingsModel.getAvailableConnections().stream()
.filter(x -> x.getInternalDb() || !onlyInternal)
.map(AvailableConnectionsModel::getProfileName)
.collect(Collectors.toList()));
}
@RequestMapping(value = "available-types", method = RequestMethod.GET)
public ServiceRestResponse retrieveAvailableTypes() throws Exception {
final HashMap<String, Integer> data = new HashMap<>();
Arrays.stream(ExchangeImportSchemaManagerService.SchemaType.values())
.forEach(x -> data.put(x.toString(), x.getValue()));
return ServiceRestResponse.createPositiveResponse(data);
}
@RequestMapping(value = "retrieve", method = RequestMethod.GET)
public ServiceRestResponse retrieveConfigs() throws Exception {
return ServiceRestResponse.createPositiveResponse(exchangeConfigService.retrieveConfigurations());
}
@RequestMapping(value = "insert", method = RequestMethod.POST)
public ServiceRestResponse insertConfig(@RequestBody StbExchangeConfig configToInsert) throws Exception {
exchangeConfigService.addConfiguration(configToInsert);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{configId}/update", method = RequestMethod.POST)
public ServiceRestResponse updateConfig(@PathVariable long configId,
@RequestBody StbExchangeConfig configToUpdate) throws Exception {
exchangeConfigService.updateConfiguration(configId, configToUpdate);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{configId}/delete", method = RequestMethod.GET)
public ServiceRestResponse deleteConfig(@PathVariable long configId) throws Exception {
exchangeConfigService.deleteConfiguration(configId);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{configId}/insert-row", method = RequestMethod.POST)
public ServiceRestResponse insertRow(@PathVariable long configId,
@RequestBody StbExchangeConfigDetail stbExchangeConfigDetail) throws Exception {
exchangeConfigService.insertRow(configId, stbExchangeConfigDetail);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{configId}/update-row/{rowId}", method = RequestMethod.POST)
public ServiceRestResponse updateRow(@PathVariable long configId, @PathVariable long rowId,
@RequestBody StbExchangeConfigDetail stbExchangeConfigDetail) throws Exception {
exchangeConfigService.updateRow(configId, stbExchangeConfigDetail);
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{configId}/update-rows-order", method = RequestMethod.POST)
public ServiceRestResponse updateRowsOrder(@PathVariable long configId,
@RequestBody ExchangeUpdateRowsOrderRequestDTO requestDTO) throws Exception {
exchangeConfigService.updateRowsOrder(configId, requestDTO.getOrderedRows());
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "{configId}/delete-row/{rowId}", method = RequestMethod.GET)
public ServiceRestResponse deleteRow(@PathVariable long configId, @PathVariable long rowId) throws Exception {
exchangeConfigService.deleteRow(configId, rowId);
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -1,7 +1,9 @@
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.ExchangeDocumentImportService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -21,14 +23,21 @@ public class ExchangeDocumentImportController {
@Autowired
private ExchangeDocumentImportService exchangeDocumentImportService;
@Autowired
private RequestDataDTO requestDataDTO;
@RequestMapping(value = "importLavorazione", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importDocumentiLavorazione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
@RequestParam(CommonConstants.PROFILE_DB) String profileDb,
@RequestParam() String profileDbExchange) throws Exception {
exchangeDocumentImportService.importTestateDocumentiLavorazione();
try (MultiDBTransactionManager internalDb = new MultiDBTransactionManager(profileDb);
MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(profileDbExchange)) {
exchangeDocumentImportService.importTestateDocumentiLavorazione(internalDb, exchangeDb, requestDataDTO);
}
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -1,7 +1,9 @@
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.ExchangeOrdiniImportService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -22,14 +24,21 @@ public class ExchangeOrdiniImportController {
@Autowired
private ExchangeOrdiniImportService exchangeOrdiniImportService;
@Autowired
private RequestDataDTO requestDataDTO;
@RequestMapping(value = "importLavorazione", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse importLavorazione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) throws Exception {
@RequestParam(CommonConstants.PROFILE_DB) String profileDb,
@RequestParam() String profileDbExchange) throws Exception {
exchangeOrdiniImportService.importOrdiniLavorazione();
try (MultiDBTransactionManager internalDb = new MultiDBTransactionManager(profileDb);
MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(profileDbExchange)) {
exchangeOrdiniImportService.importOrdiniLavorazione(internalDb, exchangeDb, requestDataDTO);
}
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.ems.system.exchange.dto;
import java.util.HashMap;
public class ExchangeUpdateRowsOrderRequestDTO {
private HashMap<Long, Integer> orderedRows;
public HashMap<Long, Integer> getOrderedRows() {
return orderedRows;
}
}

View File

@@ -1,19 +1,16 @@
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.MtbAart;
import it.integry.ems_model.entity.MtbGrup;
import it.integry.ems_model.entity.MtbSfam;
import it.integry.ems_model.entity.MtbSgrp;
import it.integry.ems_model.entity.*;
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.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.sql.Connection;
@@ -25,19 +22,14 @@ import java.util.stream.Collectors;
@SuppressWarnings("rawtypes")
@Service
@Scope("request")
public class ExchangeArticoliImportService {
//TODO: To be remove, only for fast development
private final String ROSSOGARGANO_EXCHANGE_PROFILEDB = "ROSSO_GARGANO_EXCHANGE";
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
@@ -46,21 +38,22 @@ public class ExchangeArticoliImportService {
private final Logger logger = LogManager.getLogger();
public void importArticoli() throws Exception {
public void importArticoli(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
boolean useTempTable = true;
try (MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(ROSSOGARGANO_EXCHANGE_PROFILEDB)) {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.Articoli, useTempTable);
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.Articoli, useTempTable);
importGruppiMerceologici(exchangeDb, useTempTable);
importMarchi(internalMultiDb, exchangeMultiDb, useTempTable, requestDataDTO);
importGruppiMerceologici(internalMultiDb, exchangeMultiDb, useTempTable, requestDataDTO);
final List<MtbAart> exchangeImportedData = retrieveArticoli(
exchangeDb.getPrimaryConnection(),
exchangeMultiDb.getPrimaryConnection(),
true, false);
final List<MtbAart> exchangeUpdatedData = retrieveArticoli(
exchangeDb.getPrimaryConnection(),
exchangeMultiDb.getPrimaryConnection(),
false, useTempTable);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
@@ -78,17 +71,18 @@ public class ExchangeArticoliImportService {
for (EquatableEntityInterface dataToSave : allData) {
// calls.add(() -> {
logger.debug("Importati {} di {}", importedCounter.incrementAndGet(), allData.size());
logger.debug("Importati {} articoli di {}", importedCounter.incrementAndGet(), allData.size());
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, multiDBTransactionManager);
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (MtbAart) dataToSave, useTempTable);
multiDBTransactionManager.commitAll();
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (MtbAart) dataToSave, useTempTable);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione del documento", ex);
multiDBTransactionManager.rollbackAll();
logger.error("Errore durante l'importazione dell'articolo", ex);
internalMultiDb.rollbackAll();
//throw ex;
}
@@ -99,8 +93,7 @@ public class ExchangeArticoliImportService {
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.Articoli);
}
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.Articoli);
}
}
@@ -127,63 +120,115 @@ public class ExchangeArticoliImportService {
}};
exchangeImportDataManagerService.updateImportedStatus(connection, "mtb_aart", importedKey, useTempTable);
connection.commit();
}
private void importGruppiMerceologici(MultiDBTransactionManager exchangeDb, boolean useTempTable) throws Exception {
final List<MtbGrup> exchangeImportedData = retrieveMtbGrup(
private void importGruppiMerceologici(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeDb, boolean useTempTable, RequestDataDTO requestDataDTO) throws Exception {
final List<MtbGrup> exchangeImportedDataMtbGrup = retrieveMtbGrup(
exchangeDb.getPrimaryConnection(),
true, false);
final List<MtbGrup> exchangeUpdatedData = retrieveMtbGrup(
final List<MtbSgrp> exchangeImportedDataMtbSgrp = retrieveMtbSgrup(
exchangeDb.getPrimaryConnection(),
true, false);
final List<MtbSfam> exchangeImportedDataMtbSfam = retrieveMtbSfam(
exchangeDb.getPrimaryConnection(),
true, false);
final List<MtbGrup> exchangeUpdatedDataMtbGrup = retrieveMtbGrup(
exchangeDb.getPrimaryConnection(),
false, useTempTable);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(MtbGrup.class, exchangeImportedData, exchangeUpdatedData);
final List<MtbSgrp> exchangeUpdatedDataMtbSgrp = retrieveMtbSgrup(
exchangeDb.getPrimaryConnection(),
false, useTempTable);
allData.stream()
.map(x -> (MtbGrup) x)
final List<MtbSfam> exchangeUpdatedDataMtbSfam = retrieveMtbSfam(
exchangeDb.getPrimaryConnection(),
false, useTempTable);
List<EquatableEntityInterface> allMgrpData = exchangeImportDataManagerService
.runSync(MtbGrup.class, exchangeImportedDataMtbGrup, exchangeUpdatedDataMtbGrup);
List<EquatableEntityInterface> allMsgrpData = exchangeImportDataManagerService
.runSync(MtbSgrp.class, exchangeImportedDataMtbSgrp, exchangeUpdatedDataMtbSgrp);
List<EquatableEntityInterface> allMsfamData = exchangeImportDataManagerService
.runSync(MtbSfam.class, exchangeImportedDataMtbSfam, exchangeUpdatedDataMtbSfam);
allMgrpData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
allMsgrpData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
allMsfamData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
allMsfamData.stream()
.map(x -> (MtbSfam) x)
.filter(x -> allMsgrpData.stream()
.map(y -> (MtbSgrp) y)
.noneMatch(y -> x.getCodMgrp().equalsIgnoreCase(y.getCodMgrp()) &&
x.getCodMsgr().equalsIgnoreCase(y.getCodMsgr())))
.forEach(x -> {
MtbSgrp testata = new MtbSgrp()
.setCodMgrp(x.getCodMgrp())
.setCodMsgr(x.getCodMsgr());
if (x.getOperation() == OperationType.INSERT)
x.setOperation(OperationType.INSERT_OR_UPDATE);
x.getMtbSgrp()
.forEach(y -> {
if (y.getOperation() == OperationType.INSERT)
y.setOperation(OperationType.INSERT_OR_UPDATE);
y.getMtbSfam().stream()
.filter(z -> z.getOperation() == OperationType.INSERT)
.forEach(z -> z.setOperation(OperationType.INSERT_OR_UPDATE));
y.setOperation(OperationType.INSERT_OR_UPDATE);
testata.setOperation(OperationType.UPDATE);
allMsgrpData.add(testata);
});
allMsgrpData.stream()
.map(x -> (MtbSgrp) x)
.forEach(x -> x.setMtbSfam(allMsfamData.stream()
.map(y -> (MtbSfam) y)
.filter(y -> y.getCodMgrp().equalsIgnoreCase(x.getCodMgrp()) &&
y.getCodMsgr().equalsIgnoreCase(x.getCodMsgr()))
.collect(Collectors.toList())));
allMsgrpData.stream()
.map(x -> (MtbSgrp) x)
.filter(x -> allMgrpData.stream()
.map(y -> (MtbGrup) y)
.noneMatch(y -> x.getCodMgrp().equalsIgnoreCase(y.getCodMgrp())))
.forEach(x -> {
MtbGrup testata = new MtbGrup()
.setCodMgrp(x.getCodMgrp());
testata.setOperation(OperationType.UPDATE);
allMgrpData.add(testata);
});
allMgrpData.stream()
.map(x -> (MtbGrup) x)
.forEach(x -> x.setMtbSgrp(allMsgrpData.stream()
.map(y -> (MtbSgrp) y)
.filter(y -> y.getCodMgrp().equalsIgnoreCase(x.getCodMgrp()))
.collect(Collectors.toList())));
final Exception[] firstExceptionToThrow = {null};
AtomicInteger importedCounter = new AtomicInteger();
List<RunnableThrowable> calls = new ArrayList<>();
for (EquatableEntityInterface dataToSave : allData) {
for (EquatableEntityInterface dataToSave : allMgrpData) {
// calls.add(() -> {
logger.debug("Importati {} gruppi merceologici di {}", importedCounter.incrementAndGet(), allData.size());
logger.debug("Importati {} gruppi merceologici di {}", importedCounter.incrementAndGet(), allMgrpData.size());
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, multiDBTransactionManager);
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (MtbGrup) dataToSave, useTempTable);
multiDBTransactionManager.commitAll();
internalMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione del gruppo merceologico", ex);
multiDBTransactionManager.rollbackAll();
internalMultiDb.rollbackAll();
//throw ex;
}
@@ -197,49 +242,52 @@ public class ExchangeArticoliImportService {
private List<MtbGrup> retrieveMtbGrup(Connection connection, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String mtbGrupOriginalTableName = "mtb_grup";
String mtbGrupTableName = mtbGrupOriginalTableName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(connection,
"INSERT INTO " + mtbGrupTableName +
" SELECT * FROM " + mtbGrupOriginalTableName
);
}
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbGrup.class,
mtbGrupTableName, null, retrieveAlreadyImported);
}
private List<MtbSgrp> retrieveMtbSgrup(Connection connection, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String mtbSgrpOriginalTableName = "mtb_sgrp";
String mtbSgrpTableName = mtbSgrpOriginalTableName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(connection,
"INSERT INTO " + mtbSgrpTableName +
" SELECT * FROM " + mtbSgrpOriginalTableName
);
}
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbSgrp.class,
mtbSgrpTableName, null, retrieveAlreadyImported);
}
private List<MtbSfam> retrieveMtbSfam(Connection connection, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String mtbSfamOriginalTableName = "mtb_sfam";
String mtbSfamTableName = mtbSfamOriginalTableName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(connection,
"INSERT INTO " + mtbGrupTableName +
" SELECT * FROM " + mtbGrupOriginalTableName,
"INSERT INTO " + mtbSgrpTableName +
" SELECT * FROM " + mtbSgrpOriginalTableName,
"INSERT INTO " + mtbSfamTableName +
" SELECT * FROM " + mtbSfamOriginalTableName
);
}
List<MtbGrup> mtbGrups = exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbGrup.class,
mtbGrupTableName, null, retrieveAlreadyImported);
List<MtbSgrp> mtbSgrps = exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbSgrp.class,
mtbSgrpTableName, null, retrieveAlreadyImported);
List<MtbSfam> mtbSfams = exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbSfam.class,
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbSfam.class,
mtbSfamTableName, null, retrieveAlreadyImported);
mtbSgrps.forEach(mtbSgrp -> {
mtbSgrp.setMtbSfam(mtbSfams.stream()
.filter(mtbSfam -> mtbSfam.getCodMgrp().equalsIgnoreCase(mtbSgrp.getCodMgrp()) &&
mtbSfam.getCodMsgr().equalsIgnoreCase(mtbSgrp.getCodMsgr()))
.collect(Collectors.toList()));
});
mtbGrups.forEach(mtbGrup -> {
mtbGrup.setMtbSgrp(mtbSgrps.stream()
.filter(mtbSgrp -> mtbSgrp.getCodMgrp().equalsIgnoreCase(mtbGrup.getCodMgrp()))
.collect(Collectors.toList()));
});
return mtbGrups;
}
@@ -274,4 +322,73 @@ public class ExchangeArticoliImportService {
}
private void importMarchi(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeDb, boolean useTempTable, RequestDataDTO requestDataDTO) throws Exception {
final List<MtbAartMarchio> exchangeImportedDataMtbAartMarchio = retrieveMtbAartMarchio(
exchangeDb.getPrimaryConnection(),
true, false);
final List<MtbAartMarchio> exchangeUpdatedDataMtbAartMarchio = retrieveMtbAartMarchio(
exchangeDb.getPrimaryConnection(),
false, useTempTable);
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
.runSync(MtbAartMarchio.class, exchangeImportedDataMtbAartMarchio, exchangeUpdatedDataMtbAartMarchio);
allData.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
final Exception[] firstExceptionToThrow = {null};
AtomicInteger importedCounter = new AtomicInteger();
List<RunnableThrowable> calls = new ArrayList<>();
for (EquatableEntityInterface dataToSave : allData) {
// calls.add(() -> {
logger.debug("Importati {} marchi di {}", importedCounter.incrementAndGet(), allData.size());
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (MtbAartMarchio) dataToSave, useTempTable);
internalMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione del gruppo merceologico", ex);
internalMultiDb.rollbackAll();
//throw ex;
}
// });
}
// UtilityThread.executeParallel(calls);
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
}
private List<MtbAartMarchio> retrieveMtbAartMarchio(Connection connection, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
String mtbGrupOriginalTableName = "mtb_aart_marchio";
String mtbGrupTableName = mtbGrupOriginalTableName + (useTempTable ? "_tmp" : "");
if (useTempTable) {
UtilityDB.executeStatement(connection,
"INSERT INTO " + mtbGrupTableName +
" SELECT * FROM " + mtbGrupOriginalTableName
);
}
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbAartMarchio.class,
mtbGrupTableName, null, retrieveAlreadyImported);
}
private void singleUpdateImported(Connection connection, MtbAartMarchio importedData, boolean useTempTable) throws Exception {
final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{
put("marchio", importedData.getMarchio());
}};
exchangeImportDataManagerService.updateImportedStatus(connection, "mtb_aart_marchio", importedKey, useTempTable);
connection.commit();
}
}

View File

@@ -1,7 +1,6 @@
package it.integry.ems.system.exchange.service;
import it.integry.ems.datasource.DataSource;
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.system.exchange.dto.CertificatiSinfoOneDTO;
@@ -10,21 +9,18 @@ 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;
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.UtilityList;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityQuery;
import it.integry.ems_model.utility.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.sql.Connection;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@@ -32,18 +28,17 @@ import java.util.stream.Collectors;
@SuppressWarnings("rawtypes")
@Service
@Scope("request")
public class ExchangeColliImportService {
//TODO: To be remove, only for fast development
private final String ROSSOGARGANO_EXCHANGE_PROFILEDB = "ROSSO_GARGANO_EXCHANGE";
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
private final Logger logger = LogManager.getLogger();
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
@@ -53,31 +48,58 @@ public class ExchangeColliImportService {
@Autowired
private ExchangePartiteMagazzinoImportService exchangePartiteMagazzinoImportService;
private final Logger logger = LogManager.getLogger();
@Autowired
private SetupGest setupGest;
public void importColliLavorazione() throws Exception {
public void importColliLavorazione(MultiDBTransactionManager internalMultiDb,
MultiDBTransactionManager exchangeMultiDb,
RequestDataDTO requestDataDTO) throws Exception {
this.internalImport(internalMultiDb, exchangeMultiDb, requestDataDTO, ExchangeImportSchemaManagerService.SchemaType.ColliLavorazione);
}
public void importVersamentoGrezzo(MultiDBTransactionManager internalMultiDb,
MultiDBTransactionManager exchangeMultiDb,
RequestDataDTO requestDataDTO) throws Exception {
this.internalImport(internalMultiDb, exchangeMultiDb, requestDataDTO, ExchangeImportSchemaManagerService.SchemaType.VersamentoGrezzo);
}
public void internalImport(MultiDBTransactionManager internalMultiDb,
MultiDBTransactionManager exchangeMultiDb,
RequestDataDTO requestDataDTO,
ExchangeImportSchemaManagerService.SchemaType colliSchemaType) throws Exception {
boolean useTempTable = true;
try (MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(ROSSOGARGANO_EXCHANGE_PROFILEDB)) {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.ColliLavorazione, useTempTable);
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione();
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), colliSchemaType, useTempTable);
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione(internalMultiDb, exchangeMultiDb, requestDataDTO);
String testataTableName = null;
String righeTableName = null;
if (colliSchemaType == ExchangeImportSchemaManagerService.SchemaType.ColliLavorazione) {
testataTableName = "mtb_colt_lav";
righeTableName = "mtb_colr_lav";
} else if (colliSchemaType == ExchangeImportSchemaManagerService.SchemaType.VersamentoGrezzo) {
testataTableName = "mtb_colt_versamento_grezzo";
righeTableName = "mtb_colr_versamento_grezzo";
}
final List<MtbColt> exchangeImportedMtbColts = importColliLavorazione(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
UtilityLocalDate.getNow(),
true, false);
true, false, testataTableName, righeTableName);
List<MtbColt> exchangeUpdatedMtbColts = importColliLavorazione(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
UtilityLocalDate.getNow(),
false, useTempTable);
false, useTempTable, testataTableName, righeTableName);
List<EquatableEntityInterface> importedMtbColts = exchangeImportedMtbColts.stream()
@@ -91,49 +113,43 @@ public class ExchangeColliImportService {
List<EquatableEntityInterface> allMtbColts = exchangeImportDataManagerService
.runSync(MtbColt.class, importedMtbColts, updatedMtbColts);
allMtbColts.forEach(x -> x.setOperation(x.getOperation() == OperationType.INSERT ? OperationType.INSERT_OR_UPDATE : x.getOperation()));
final Exception[] firstExceptionToThrow = {null};
AtomicInteger importedCounter = new AtomicInteger();
List<RunnableThrowable> calls = new ArrayList<>();
for (EquatableEntityInterface mtbColtToSave : allMtbColts) {
for (EquatableEntityInterface dataToSave : allMtbColts) {
// calls.add(() -> {
logger.debug("Importati {} di {}", importedCounter.incrementAndGet(), allMtbColts.size());
logger.debug("Importati {} colli di {}", importedCounter.incrementAndGet(), allMtbColts.size());
try {
entityProcessor.processEntity(mtbColtToSave, multiDBTransactionManager);
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (MtbColt) dataToSave, testataTableName, useTempTable);
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (MtbColt) dataToSave, righeTableName, useTempTable);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (MtbColt) mtbColtToSave, useTempTable);
multiDBTransactionManager.commitAll();
exchangeDb.commitAll();
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione del collo", ex);
//multiDBTransactionManager.rollbackAll();
//throw ex;
}
// });
}
// UtilityThread.executeParallel(calls);
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.ColliLavorazione);
}
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), colliSchemaType);
}
}
private List<MtbColt> importColliLavorazione(Connection connection,
LocalDate minDate, LocalDate maxDate, boolean retrieveAlreadyImported, boolean useTempTable) throws Exception {
LocalDate minDate, LocalDate maxDate, boolean retrieveAlreadyImported, boolean useTempTable, String testataTableName, String righeTableName) throws Exception {
String mtbColtLavOriginalName = "mtb_colt_lav";
String mtbColtLavOriginalName = testataTableName;
String mtbColtLavTableName = mtbColtLavOriginalName + (useTempTable ? "_tmp" : "");
String mtbColrLavOriginalName = "mtb_colr_lav";
String mtbColrLavOriginalName = righeTableName;
String mtbColrLavTableName = mtbColrLavOriginalName + (useTempTable ? "_tmp" : "");
@@ -156,11 +172,6 @@ public class ExchangeColliImportService {
mtbColtLav
.forEach(x -> {
// x.setDataDoc(null)
// .setSerDoc(null)
// .setCodDtip(null);
x.setMtbColr(mtbColrLav.stream()
.filter(y -> y.getDataCollo().equals(x.getDataCollo()) &&
y.getGestione().equalsIgnoreCase(x.getGestione()) &&
@@ -173,32 +184,28 @@ public class ExchangeColliImportService {
}
private void singleUpdateImported(Connection connection, MtbColt importedMtbColt, boolean useTempTable) throws Exception {
private void singleUpdateImported(Connection connection, MtbColt importedDataKey, String tableName, boolean useTempTable) throws Exception {
final HashMap<String, Object> importedKey = new HashMap<String, Object>() {{
put("data_collo", importedMtbColt.getDataCollo());
put("ser_collo", importedMtbColt.getSerCollo());
put("num_collo", importedMtbColt.getNumCollo());
put("gestione", importedMtbColt.getGestione());
put("data_collo", importedDataKey.getDataCollo());
put("ser_collo", importedDataKey.getSerCollo());
put("num_collo", importedDataKey.getNumCollo());
put("gestione", importedDataKey.getGestione());
}};
exchangeImportDataManagerService.updateImportedStatus(connection, "mtb_colt_lav", importedKey, useTempTable);
exchangeImportDataManagerService.updateImportedStatus(connection, "mtb_colr_lav", importedKey, useTempTable);
exchangeImportDataManagerService.updateImportedStatus(connection, tableName, importedKey, useTempTable);
}
public List<CertificatiSinfoOneDTO> getCertificati(String codAnag, LocalDate dataCert, String codMart, String codVdes) throws Exception {
public List<CertificatiSinfoOneDTO> getCertificati(String profileDb, String codAnag, LocalDate dataCert, String codMart, String codVdes) throws Exception {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileDb)) {
String profileDbExchange = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "PVM", "PIAN_ACC_ROSSG", "PROFILE_DB_CERT");
DataSource dsSync = new DataSource();
dsSync.initialize(profileDbExchange);
multiDBTransactionManager.addConnection(profileDbExchange, dsSync);
Connection conExch = multiDBTransactionManager.getDatabaseDataSource(profileDbExchange).getConnection();
try (MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(profileDbExchange)) {
List<CertificatiSinfoOneDTO> listaCert = UtilityDB.executeSimpleQueryDTO(
conExch,
exchangeDb.getPrimaryConnection(),
Query.format("SELECT TRIM(cod_anag) AS codAnag,\n" +
" TRIM(rag_soc) AS ragSoc,\n" +
" TRIM(cod_Vdes) AS codVdes,\n" +
@@ -241,7 +248,7 @@ public class ExchangeColliImportService {
" AND cod_anag = {}\n" +
" AND data_doc = {}\n", codDtipLavCar, codAnag, dataCert),
DtbDoct.class);
if (!UtilityList.isNullOrEmpty(certificatiImportati) && ! UtilityList.isNullOrEmpty(listaCert)) {
if (!UtilityList.isNullOrEmpty(certificatiImportati) && !UtilityList.isNullOrEmpty(listaCert)) {
listaCert = listaCert.stream().filter((CertificatiSinfoOneDTO cert) ->
certificatiImportati.stream().noneMatch(ddt -> ddt.getNumDoc() == cert.getNumCert().intValue())
).collect(Collectors.toList());
@@ -249,4 +256,6 @@ public class ExchangeColliImportService {
return listaCert;
}
}
}
}

View File

@@ -0,0 +1,144 @@
package it.integry.ems.system.exchange.service;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.StbExchangeConfig;
import it.integry.ems_model.entity.StbExchangeConfigDetail;
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.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@Scope(value = "request")
public class ExchangeConfigService {
private final Logger logger = LogManager.getLogger();
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private ExchangeSystemManagerService exchangeSystemManagerService;
public List<StbExchangeConfig> retrieveConfigurations() throws Exception {
List<StbExchangeConfig> stbExchangeConfigsToRetrieve = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),
"SELECT * FROM " + StbExchangeConfig.ENTITY, StbExchangeConfig.class);
if (stbExchangeConfigsToRetrieve == null) return null;
List<StbExchangeConfigDetail> stbExchangeConfigsDetailsToRetrieve = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(),
"SELECT * FROM " + StbExchangeConfigDetail.ENTITY, StbExchangeConfigDetail.class);
if (stbExchangeConfigsDetailsToRetrieve == null) stbExchangeConfigsDetailsToRetrieve = new ArrayList<>();
for (StbExchangeConfig stbExchangeConfig : stbExchangeConfigsToRetrieve) {
stbExchangeConfig.getStbExchangeConfigDetail()
.addAll(stbExchangeConfigsDetailsToRetrieve.stream()
.filter(x -> Objects.equals(x.getStbExchangeConfigId(), stbExchangeConfig.getId()))
.collect(Collectors.toList()));
}
return stbExchangeConfigsToRetrieve;
}
public void addConfiguration(StbExchangeConfig stbExchangeConfig) throws Exception {
stbExchangeConfig.setOperation(OperationType.INSERT);
entityProcessor.processEntity(stbExchangeConfig, multiDBTransactionManager);
exchangeSystemManagerService.registerSchedulation(stbExchangeConfig);
}
public void updateConfiguration(long idToUpdate, StbExchangeConfig stbExchangeConfig) throws Exception {
stbExchangeConfig.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(stbExchangeConfig, multiDBTransactionManager);
exchangeSystemManagerService.registerSchedulation(stbExchangeConfig);
}
public void deleteConfiguration(long idToDelete) throws Exception {
exchangeSystemManagerService.deregisterSchedulation(idToDelete);
StbExchangeConfig stbExchangeConfigToDelete = new StbExchangeConfig()
.setId(idToDelete);
stbExchangeConfigToDelete.setOperation(OperationType.DELETE);
entityProcessor.processEntity(stbExchangeConfigToDelete, multiDBTransactionManager);
}
public void insertRow(long configId, StbExchangeConfigDetail stbExchangeConfigDetail) throws Exception {
StbExchangeConfig stbExchangeConfig = new StbExchangeConfig()
.setId(configId);
stbExchangeConfig.setOperation(OperationType.NO_OP);
stbExchangeConfigDetail.setOperation(OperationType.INSERT);
stbExchangeConfig.getStbExchangeConfigDetail().add(stbExchangeConfigDetail);
entityProcessor.processEntity(stbExchangeConfig, multiDBTransactionManager);
}
public void updateRow(long configId, StbExchangeConfigDetail stbExchangeConfigDetail) throws Exception {
StbExchangeConfig stbExchangeConfig = new StbExchangeConfig()
.setId(configId);
stbExchangeConfig.setOperation(OperationType.NO_OP);
stbExchangeConfigDetail.setOperation(OperationType.UPDATE);
stbExchangeConfig.getStbExchangeConfigDetail().add(stbExchangeConfigDetail);
entityProcessor.processEntity(stbExchangeConfig, multiDBTransactionManager);
}
public void deleteRow(long configId, long rowid) throws Exception {
StbExchangeConfig stbExchangeConfig = new StbExchangeConfig()
.setId(configId);
stbExchangeConfig.setOperation(OperationType.NO_OP);
StbExchangeConfigDetail stbExchangeConfigDetail = new StbExchangeConfigDetail()
.setId(rowid)
.setStbExchangeConfigId(configId);
stbExchangeConfigDetail.setOperation(OperationType.DELETE);
stbExchangeConfig.getStbExchangeConfigDetail().add(stbExchangeConfigDetail);
entityProcessor.processEntity(stbExchangeConfig, multiDBTransactionManager);
}
public void updateRowsOrder(long configId, HashMap<Long, Integer> orderedRows) throws Exception {
StbExchangeConfig stbExchangeConfig = new StbExchangeConfig()
.setId(configId);
stbExchangeConfig.setOperation(OperationType.NO_OP);
orderedRows.forEach((rowId, order) -> {
StbExchangeConfigDetail stbExchangeConfigDetail = new StbExchangeConfigDetail()
.setId(rowId)
.setStbExchangeConfigId(configId)
.setExecutionOrder(order);
stbExchangeConfigDetail.setOperation(OperationType.UPDATE);
stbExchangeConfig.getStbExchangeConfigDetail().add(stbExchangeConfigDetail);
});
entityProcessor.processEntity(stbExchangeConfig, multiDBTransactionManager);
}
}

View File

@@ -1,6 +1,7 @@
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;
@@ -13,7 +14,6 @@ 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;
@@ -27,19 +27,14 @@ import java.util.stream.Collectors;
@SuppressWarnings("rawtypes")
@Service
@Scope("request")
public class ExchangeDocumentImportService {
//TODO: To be remove, only for fast development
private final String ROSSOGARGANO_EXCHANGE_PROFILEDB = "ROSSO_GARGANO_EXCHANGE";
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
@@ -51,39 +46,40 @@ public class ExchangeDocumentImportService {
private final Logger logger = LogManager.getLogger();
public void importTestateDocumentiLavorazione() throws Exception {
public void importTestateDocumentiLavorazione(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
boolean useTempTable = true;
try (MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(ROSSOGARGANO_EXCHANGE_PROFILEDB)) {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.DocumentiLavorazione, useTempTable);
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione();
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.DocumentiLavorazione, useTempTable);
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione(internalMultiDb, exchangeMultiDb, requestDataDTO);
final List<DtbDoct> exchangeImportedTestateData = importTestateDocumentiLavorazione(
exchangeDb.getPrimaryConnection(),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
UtilityLocalDate.getNow(),
true, false);
final List<DtbDoct> exchangeUpdatedTestateData = importTestateDocumentiLavorazione(
exchangeDb.getPrimaryConnection(),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
UtilityLocalDate.getNow(),
false, useTempTable);
exchangeUpdatedTestateData.forEach(x -> x.setUpdProgMaga(false));
final List<DtbDocr> exchangeImportedRigheData = importRigheDocumentiLavorazione(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
UtilityLocalDate.getNow(),
true, false);
final List<DtbDocr> exchangeUpdatedRigheData = importRigheDocumentiLavorazione(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
UtilityLocalDate.getNow(),
false, useTempTable);
@@ -138,15 +134,15 @@ public class ExchangeDocumentImportService {
for (EquatableEntityInterface dataToSave : allData) {
// calls.add(() -> {
logger.debug("Importati {} di {}", importedCounter.incrementAndGet(), allData.size());
logger.debug("Importati {} documenti di {}", importedCounter.incrementAndGet(), allData.size());
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, multiDBTransactionManager);
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (DtbDoct) dataToSave, useTempTable);
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (DtbDoct) dataToSave, useTempTable);
//multiDBTransactionManager.commitAll();
multiDBTransactionManager.commitAll();
exchangeDb.commitAll();
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
@@ -163,8 +159,7 @@ public class ExchangeDocumentImportService {
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.DocumentiLavorazione);
}
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.DocumentiLavorazione);
}
}

View File

@@ -1,10 +1,12 @@
package it.integry.ems.system.exchange.service;
import com.fasterxml.jackson.annotation.JsonValue;
import it.integry.ems.entity_logger.db_schema_manager.component.SQLServerDBSchemaManager;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTable;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTableColumn;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTableView;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseView;
import it.integry.ems_model.entity._enum.IBaseEnum;
import org.springframework.stereotype.Service;
import java.sql.Connection;
@@ -18,20 +20,53 @@ import java.util.stream.Collectors;
public class ExchangeImportSchemaManagerService {
public enum SchemaType {
ColliLavorazione,
OrdiniLavorazione,
DocumentiLavorazione,
Articoli,
PartiteMagazzinoLavorazione
public enum SchemaType implements IBaseEnum {
ColliLavorazione(1),
OrdiniLavorazione(2),
DocumentiLavorazione(3),
Articoli(4),
PartiteMagazzinoLavorazione(5),
VersamentoGrezzo(6);
private final int value;
SchemaType(int value) {
this.value = value;
}
public static SchemaType from(Object value) {
int castValue = (int) value;
for (SchemaType b : SchemaType.values()) {
if (b.value == castValue)
return b;
}
return null;
}
@JsonValue
public int getValue() {
return this.value;
}
@Override
public Object get() {
return this.value;
}
@Override
public Object fromInternal(Object val) {
return from(val);
}
}
private final HashMap<SchemaType, List<String>> schemaToTableBinding = new HashMap<SchemaType, List<String>>() {{
put(SchemaType.ColliLavorazione, Arrays.asList("mtb_colt_lav", "mtb_colr_lav"));
put(SchemaType.OrdiniLavorazione, Arrays.asList("dtb_ordt_lav", "dtb_ordr_lav"));
put(SchemaType.DocumentiLavorazione, Arrays.asList("dtb_doct_lav", "dtb_docr_lav"));
put(SchemaType.Articoli, Arrays.asList("mtb_aart", "mtb_grup", "mtb_sgrp", "mtb_sfam", "mtb_tipi"));
put(SchemaType.Articoli, Arrays.asList("mtb_aart", "mtb_grup", "mtb_sgrp", "mtb_sfam", "mtb_tipi", "mtb_aart_marchio"));
put(SchemaType.PartiteMagazzinoLavorazione, Arrays.asList("mtb_partita_mag_lav"));
put(SchemaType.VersamentoGrezzo, Arrays.asList("mtb_colt_versamento_grezzo", "mtb_colr_versamento_grezzo"));
}};
public void syncSchema(Connection connection, SchemaType schemaType, boolean createTempTablesToo) throws Exception {

View File

@@ -1,6 +1,7 @@
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;
@@ -14,7 +15,6 @@ 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;
@@ -28,20 +28,16 @@ import java.util.stream.Collectors;
@SuppressWarnings("rawtypes")
@Service
@Scope("request")
public class ExchangeOrdiniImportService {
//TODO: To be remove, only for fast development
private final String ROSSOGARGANO_EXCHANGE_PROFILEDB = "ROSSO_GARGANO_EXCHANGE";
private final String ROSSOGARGANO_EXCHANGE_USER = "DBA";
private final Logger logger = LogManager.getLogger();
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
@@ -51,25 +47,24 @@ public class ExchangeOrdiniImportService {
@Autowired
private ExchangePartiteMagazzinoImportService exchangePartiteMagazzinoImportService;
public void importOrdiniLavorazione() throws Exception {
public void importOrdiniLavorazione(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
boolean useTempTable = true;
try (MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(ROSSOGARGANO_EXCHANGE_PROFILEDB)) {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione, useTempTable);
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione();
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione, useTempTable);
exchangePartiteMagazzinoImportService.importPartiteMagazzinoLavorazione(internalMultiDb, exchangeMultiDb, requestDataDTO);
final List<DtbOrdt> exchangeImportedMtbColts = importOrdiniLavorazione(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
UtilityLocalDate.getNow(),
true, false);
final List<DtbOrdt> exchangeUpdatedMtbColts = importOrdiniLavorazione(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusWeeks(1),
exchangeMultiDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(1),
UtilityLocalDate.getNow(),
false, useTempTable);
@@ -105,21 +100,21 @@ public class ExchangeOrdiniImportService {
List<RunnableThrowable> calls = new ArrayList<>();
for (EquatableEntityInterface dtbOrdtToSave : listToProcess) {
for (EquatableEntityInterface dataToSave : listToProcess) {
//calls.add(() -> {
logger.debug("Importati {} di {}", importedCounter[0].incrementAndGet(), allData.size());
logger.debug("Importati {} ordini di {}", importedCounter[0].incrementAndGet(), allData.size());
try {
entityProcessor.processEntity(dtbOrdtToSave, multiDBTransactionManager);
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (DtbOrdt) dtbOrdtToSave, useTempTable);
multiDBTransactionManager.commitAll();
exchangeDb.commitAll();
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (DtbOrdt) dataToSave, useTempTable);
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione dell'ordine", ex);
multiDBTransactionManager.rollbackAll();
internalMultiDb.rollbackAll();
//throw ex;
}
//});
@@ -133,8 +128,7 @@ public class ExchangeOrdiniImportService {
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione);
}
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.OrdiniLavorazione);
}
}

View File

@@ -1,18 +1,17 @@
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.MtbPartitaMag;
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;
@@ -24,7 +23,6 @@ import java.util.concurrent.atomic.AtomicInteger;
@SuppressWarnings("rawtypes")
@Service
@Scope("request")
public class ExchangePartiteMagazzinoImportService {
//TODO: To be remove, only for fast development
@@ -35,9 +33,6 @@ public class ExchangePartiteMagazzinoImportService {
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private ExchangeImportSchemaManagerService exchangeImportSchemaManagerService;
@@ -46,23 +41,22 @@ public class ExchangePartiteMagazzinoImportService {
private final Logger logger = LogManager.getLogger();
public void importPartiteMagazzinoLavorazione() throws Exception {
public void importPartiteMagazzinoLavorazione(MultiDBTransactionManager internalMultiDb, MultiDBTransactionManager exchangeMultiDb, RequestDataDTO requestDataDTO) throws Exception {
boolean useTempTable = true;
try (MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(ROSSOGARGANO_EXCHANGE_PROFILEDB)) {
try {
exchangeImportSchemaManagerService.syncSchema(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione, useTempTable);
exchangeImportSchemaManagerService.syncSchema(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione, useTempTable);
final List<MtbPartitaMag> exchangeImportedData = retrievePartite(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(3),
exchangeMultiDb.getPrimaryConnection(),
LocalDate.of(2022, 1, 1),
UtilityLocalDate.getNow(),
true, false);
final List<MtbPartitaMag> exchangeUpdatedData = retrievePartite(
exchangeDb.getPrimaryConnection(),
UtilityLocalDate.getNow().minusMonths(3),
exchangeMultiDb.getPrimaryConnection(),
LocalDate.of(2022, 1, 1),
UtilityLocalDate.getNow(),
false, useTempTable);
@@ -83,19 +77,18 @@ public class ExchangePartiteMagazzinoImportService {
// calls.add(() -> {
logger.debug("Importate {} partite di magazzino di {}", importedCounter.incrementAndGet(), allData.size());
try {
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, multiDBTransactionManager);
entityProcessor.processEntity(dataToSave, true, true, ROSSOGARGANO_EXCHANGE_USER, internalMultiDb, requestDataDTO);
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (MtbPartitaMag) dataToSave, useTempTable);
singleUpdateImported(exchangeDb.getPrimaryConnection(), (MtbPartitaMag) dataToSave, useTempTable);
//multiDBTransactionManager.commitAll();
multiDBTransactionManager.commitAll();
exchangeDb.commitAll();
internalMultiDb.commitAll();
exchangeMultiDb.commitAll();
} catch (Exception ex) {
if (firstExceptionToThrow[0] == null) firstExceptionToThrow[0] = ex;
logger.error("Errore durante l'importazione della partita di magazzino", ex);
//multiDBTransactionManager.rollbackAll();
internalMultiDb.rollbackAll();
exchangeMultiDb.rollbackAll();
//throw ex;
}
@@ -107,8 +100,7 @@ public class ExchangePartiteMagazzinoImportService {
if (firstExceptionToThrow[0] != null) throw firstExceptionToThrow[0];
} finally {
if (useTempTable)
exchangeImportSchemaManagerService.deleteTempTables(exchangeDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione);
}
exchangeImportSchemaManagerService.deleteTempTables(exchangeMultiDb.getPrimaryConnection(), ExchangeImportSchemaManagerService.SchemaType.PartiteMagazzinoLavorazione);
}
}
@@ -128,7 +120,7 @@ public class ExchangePartiteMagazzinoImportService {
return exchangeImportDataManagerService.retrieveDataFromExchange(connection, MtbPartitaMag.class,
mtbPartitaMagLavTableName, Query.format("data_ins BETWEEN {} AND {}", minDate, maxDate), retrieveAlreadyImported);
mtbPartitaMagLavTableName, null, retrieveAlreadyImported);
}

View File

@@ -0,0 +1,144 @@
package it.integry.ems.system.exchange.service;
import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostContextConstruct;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.entity.StbExchangeConfig;
import it.integry.ems_model.entity.StbExchangeConfigDetail;
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.scheduling.TaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ContextLoader;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
@Component
public class ExchangeSystemManagerService {
private final Logger logger = LogManager.getLogger();
@PostContextAutowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private TaskScheduler taskScheduler;
@Autowired
private SettingsModel settingsModel;
private final HashMap<Long, ScheduledFuture<?>> scheduledOperations = new HashMap<>();
@PostContextConstruct(priority = 20)
public void init() throws Exception {
if(!settingsModel.isPrimaryInstance() || UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer())
return;
for (AdvancedDataSource db : multiDBTransactionManager.getActiveConnections()) {
String query = "SELECT cast(Count(*) as bit) existTable FROM sys.objects WHERE object_id = OBJECT_ID(N'" + StbExchangeConfig.ENTITY + "') AND type in (N'U')";
boolean existTable = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(db.getConnection(), query);
if (!existTable) continue;
List<StbExchangeConfig> stbExchangeConfigsToRetrieve = UtilityDB.executeSimpleQueryDTO(db.getConnection(),
"SELECT * FROM " + StbExchangeConfig.ENTITY, StbExchangeConfig.class);
if (stbExchangeConfigsToRetrieve == null) continue;
for (StbExchangeConfig stbExchangeConfig : stbExchangeConfigsToRetrieve) {
registerSchedulation(stbExchangeConfig);
}
}
}
public void deregisterSchedulation(long configId) {
if (scheduledOperations.containsKey(configId)) {
scheduledOperations.get(configId).cancel(false);
scheduledOperations.remove(configId);
}
}
public void registerSchedulation(StbExchangeConfig stbExchangeConfig) {
deregisterSchedulation(stbExchangeConfig.getId());
CronTrigger cronTrigger = new CronTrigger(stbExchangeConfig.getSchedulationCron());
ScheduledFuture<?> future =
taskScheduler.schedule(() -> executeExchange(stbExchangeConfig), cronTrigger);
scheduledOperations.put(stbExchangeConfig.getId(), future);
}
private void executeExchange(StbExchangeConfig stbExchangeConfig) {
logger.info("Avvio EXCHANGE [" + stbExchangeConfig.getDescription() + "]");
try (MultiDBTransactionManager internalDb = new MultiDBTransactionManager(stbExchangeConfig.getInternalProfileDb());
MultiDBTransactionManager exchangeDb = new MultiDBTransactionManager(stbExchangeConfig.getExternalProfileDb())) {
List<StbExchangeConfigDetail> stbExchangeConfigs = UtilityDB.executeSimpleQueryDTO(internalDb.getPrimaryConnection(),
"SELECT * FROM " + StbExchangeConfigDetail.ENTITY + " " +
" WHERE stb_exchange_config_id = " + stbExchangeConfig.getId() +
" ORDER BY execution_order", StbExchangeConfigDetail.class);
if (stbExchangeConfigs == null) return;
RequestDataDTO requestDataDTO = new RequestDataDTO();
requestDataDTO.setUsername("EXCHANGE");
for (StbExchangeConfigDetail stbExchangeConfigDetail : stbExchangeConfigs) {
final ExchangeImportSchemaManagerService.SchemaType schemaType = ExchangeImportSchemaManagerService.SchemaType.from(stbExchangeConfigDetail.getConfigType());
switch (schemaType) {
case ColliLavorazione:
final ExchangeColliImportService beanColliLavorazione = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeColliImportService.class);
beanColliLavorazione.importColliLavorazione(internalDb, exchangeDb, requestDataDTO);
break;
case VersamentoGrezzo:
final ExchangeColliImportService beanVersamentoGrezzo = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeColliImportService.class);
beanVersamentoGrezzo.importVersamentoGrezzo(internalDb, exchangeDb, requestDataDTO);
break;
case OrdiniLavorazione:
final ExchangeOrdiniImportService beanOrdiniLavorazione = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeOrdiniImportService.class);
beanOrdiniLavorazione.importOrdiniLavorazione(internalDb, exchangeDb, requestDataDTO);
break;
case DocumentiLavorazione:
final ExchangeDocumentImportService beanDocumentiLavorazione = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeDocumentImportService.class);
beanDocumentiLavorazione.importTestateDocumentiLavorazione(internalDb, exchangeDb, requestDataDTO);
break;
case Articoli:
final ExchangeArticoliImportService beanArticoli = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangeArticoliImportService.class);
beanArticoli.importArticoli(internalDb, exchangeDb, requestDataDTO);
break;
case PartiteMagazzinoLavorazione:
final ExchangePartiteMagazzinoImportService beanPartiteMagazzino = ContextLoader.getCurrentWebApplicationContext().getBean(ExchangePartiteMagazzinoImportService.class);
beanPartiteMagazzino.importPartiteMagazzinoLavorazione(internalDb, exchangeDb, requestDataDTO);
break;
}
}
} catch (Exception e) {
logger.error("Errore", e);
throw new RuntimeException(e);
}
logger.info("Fine EXCHANGE [" + stbExchangeConfig.getDescription() + "]");
}
}

View File

@@ -5,12 +5,8 @@ import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration.dto.SqlObjectTypeEnum;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.dto.SqlObjectDTO;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.entity.StbGestSetupQuery;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.logging.log4j.LogManager;
@@ -31,8 +27,6 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@Scope(value = "request")