Merge remote-tracking branch 'origin/feature/JDK11' into feature/JDK11
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-12-16 11:48:38 +01:00
3 changed files with 138 additions and 48 deletions

View File

@@ -0,0 +1,44 @@
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_20251216103055 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM", "RILEVAZIONI_STEUP", "FORN_INEVASI", null, "Inserire un json [\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"\",\n" +
"\t\t\"ggCons\": 7\n" +
"\t}]", false,
null,
true, false, false, true, false, null, false, null);
if (!isCustomerDb(IntegryCustomerDB.Carelli_Winact)) return;
String json = "[\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"05848860721\",\n" +
"\t\t\"ggCons\": 7\n" +
"\t},\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"05754810728\",\n" +
"\t\t\"ggCons\": 7\n" +
"\t},\n" +
"\t{\n" +
"\t\t\"partitaIva\": \"07716650721\",\n" +
"\t\t\"ggCons\": 1\n" +
"\t}\n" +
"]";
updateSetupValue("PVM", "RILEVAZIONI_STEUP", "FORN_INEVASI", json);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.activity.dto;
public class SteUpFornitoriDTO {
private String partitaIva;
private Integer ggCons;
public String getPartitaIva() {
return partitaIva;
}
public SteUpFornitoriDTO setPartitaIva(String partitaIva) {
this.partitaIva = partitaIva;
return this;
}
public Integer getGgCons() {
return ggCons;
}
public SteUpFornitoriDTO setGgCons(Integer ggCons) {
this.ggCons = ggCons;
return this;
}
}

View File

@@ -2,20 +2,20 @@ package it.integry.ems.activity.service;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import it.integry.common.var.CommonConstants;
import it.integry.ems.activity.dto.DescrizioneTipiAttivitaDTO;
import it.integry.ems.activity.dto.ModellinoDTO;
import it.integry.ems.activity.dto.SteUPEntryDTO;
import it.integry.ems.activity.dto.SteUpScoreDTO;
import it.integry.ems.activity.dto.*;
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.javabeans.RequestDataDTO;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.order.dto.UserGroupENUM;
import it.integry.ems.report.dto.JasperDTO;
import it.integry.ems.report.dto.PairsDTO;
import it.integry.ems.retail.pvmRetail.dto.FiltroArtDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
import it.integry.ems.service.ReportProcessor;
@@ -43,6 +43,7 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
@@ -61,6 +62,7 @@ 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;
import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect;
import static org.json.XMLTokener.entity;
@Service
@Scope("request")
@@ -738,7 +740,7 @@ public class SteUPService {
if (barcodes != null && !barcodes.isEmpty()) {
for (String barcode : barcodes) {
StbActivity art = getArticoli(barcode, null, activityTypeId, codJfas, userNamePv);
if( art != null)
if (art != null)
stbActivityList.add(art);
}
}
@@ -1481,8 +1483,13 @@ public class SteUPService {
String tipoAttivitaRotturaStock = setup.get("TIPO_ATTIVITA_ROTTURA_STOCK");
List<String> repartiFreschi = Arrays.asList(StringUtils.split(UtilityString.isNull(setup.get("REPARTI_FRESCHI"), ""), "|"));
List<String> tipiEsclusi = Arrays.asList(StringUtils.split(UtilityString.isNull(setup.get("EXCLUDE_COD_MTIP"), ""), "|"));
List<String> fornitori = Arrays.asList(StringUtils.split(UtilityString.isNull(setup.get("ELENCO_FORN_INEVASI"), ""), "|"));
String jsonFornitori = setup.get("FORN_INEVASI");
List<SteUpFornitoriDTO> fornitori = new ArrayList<>();
if (!UtilityString.isNullOrEmpty(jsonFornitori)) {
TypeReference<List<SteUpFornitoriDTO>> mapType = new TypeReference<List<SteUpFornitoriDTO>>() {
};
fornitori = new ResponseJSONObjectMapper().readValue(jsonFornitori, mapType);
}
String sql =
Query.format(
"select i.cod_mdep, stb_activity.cod_jfas, stb_activity.activity_id, stb_activity.user_name\n" +
@@ -1506,7 +1513,7 @@ public class SteUPService {
List<String> barcodes = new ArrayList<>();
List<String> idAttivita = new ArrayList<>();
for ( HashMap<String, Object> r: reparto.getValue() ) {
for (HashMap<String, Object> r : reparto.getValue()) {
String activityId = (String) r.get("activity_id");
idAttivita.add(activityId);
StbActivityFile stbActivityFile = new StbActivityFile()
@@ -1617,11 +1624,11 @@ public class SteUPService {
}
public List<String> verificaRottura(String codMdep, String codJfas,
LocalDate dataCreation,
List<String> repartiFreschi,
List<String> tipiEsclusi,
List<String> fornitori,
List<String> barcode) throws Exception {
LocalDate dataCreation,
List<String> repartiFreschi,
List<String> tipiEsclusi,
List<SteUpFornitoriDTO> fornitori,
List<String> barcode) throws Exception {
String tipoGriglia = setupGest.getSetupDet(multiDBTransactionManager.getPrimaryConnection(), "PVM", "RILEVAZIONI_STEUP", "TIPO_GRIGLIA", codJfas);
@@ -1636,7 +1643,7 @@ public class SteUPService {
case "A":
queryAssortimento =
"SELECT DISTINCT mtb_aart.cod_mart\n" +
" FROM mvw_barcode INNER JOIN mtb_aart ON mtb_aart.cod_mart = mvw_barcode.cod_mart \n";
" FROM mvw_barcode INNER JOIN mtb_aart ON mtb_aart.cod_mart = mvw_barcode.cod_mart \n";
break;
case "V":
queryAssortimento =
@@ -1696,7 +1703,7 @@ public class SteUPService {
//Eliminazione nuovi inserimenti in griglia
String sqlGriglia =
"WITH articoli AS ( \n" + queryKit + " ) \n" +
"SELECT g.cod_mart\n" +
"SELECT g.cod_mart\n" +
"FROM dbo.getgrigliaacquisto([DATA_CREAZIONE], NULL, [COD_MDEP], NULL, NULL) g\n" +
" INNER JOIN mtb_aart ON g.cod_mart = mtb_aart.cod_mart AND mtb_aart.cod_mgrp IN ([GRUPPI_MERC])\n" +
" INNER JOIN articoli ON g.cod_mart = articoli.cod_mart_griglia\n" +
@@ -1719,42 +1726,57 @@ public class SteUPService {
.filter(x -> !nuoviInserimenti.contains(x))
.collect(Collectors.toList());
//Verifica Inevasi
String sqlInevasi =
"WITH articoli AS (" + queryKit + ")\n" +
"SELECT DISTINCT articoli.cod_mart\n" +
"FROM dtb_ordt\n" +
" 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" +
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN articoli ON mtb_aart.cod_mart = articoli.cod_mart_griglia\n" +
"WHERE dtb_ordt.gestione = 'A'\n" +
" AND dtb_ordt.flag_annulla = 'N'\n" +
" AND gtb_anag.part_iva IN ([ELENCO_FORNITORI])\n" +
" AND dtb_ordt.cod_mdep = [COD_MDEP]\n" +
" AND dtb_ordt.data_esportazione IS NOT NULL\n" +
" AND mtb_aart.cod_mgrp IN ( [GRUPPI_MERC] ) \n" +
" AND dtb_ordr.qta_evasa = 0\n" +
" AND dtb_ordr.data_cons BETWEEN DATEADD(DAY, -7, [DATA_ISPEZIONE]) AND [DATA_ISPEZIONE]\n";
if (fornitori.size() > 0) {
String whereCondFornitori = fornitori.stream().map(
x -> {
return "(gtb_anag.part_iva = " + UtilityDB.valueToString(x.getPartitaIva()) + " AND \n" +
" dtb_ordr.data_cons BETWEEN DATEADD(DAY, - (" + x.getGgCons() + "-1), " + UtilityDB.valueToString(dataCreation) + ") AND " + UtilityDB.valueToString(dataCreation) + ")\n";
}
).collect(Collectors.joining(" OR \n", " AND ( \n", " ) \n"));
sqlInevasi =
sqlInevasi
.replace("[DATA_ISPEZIONE]", UtilityDB.valueToString(dataCreation))
.replace("[COD_MDEP]", UtilityDB.valueToString(codMdep))
.replace("[GRUPPI_MERC]", UtilityDB.listValueToString(gruppiMerc))
.replace("[ELENCO_FORNITORI]", UtilityDB.listValueToString(fornitori));
//Verifica Inevasi
String sqlInevasi =
"WITH articoli AS (" + queryKit + "), \n" +
" ordini AS (SELECT articoli.cod_mart,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordr.qta_evasa,\n" +
" DENSE_RANK() OVER (PARTITION BY dtb_ordt.cod_anag, dtb_ordt.cod_mdep ORDER BY dtb_ordr.data_cons DESC) id_ord\n" +
" FROM dtb_ordt\n" +
" 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" +
" INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN articoli ON mtb_aart.cod_mart = articoli.cod_mart_griglia\n" +
" WHERE dtb_ordt.gestione = 'A'\n" +
" AND dtb_ordt.flag_annulla = 'N'\n" +
" AND dtb_ordt.cod_mdep = [COD_MDEP]\n" +
" [WHERE_COND_FORN]\n" +
(!tipiEsclusi.isEmpty()?
" AND (mtb_aart.cod_mtip IS NULL OR mtb_aart.cod_mtip not in (" + UtilityDB.listValueToString(tipiEsclusi) + "))\n":""
) +
" AND dtb_ordt.data_esportazione IS NOT NULL\n" +
" AND mtb_aart.cod_mgrp IN ( [GRUPPI_MERC] ) \n)\n"+
"SELECT DISTINCT cod_mart\n" +
"FROM ordini\n" +
"WHERE id_ord <= 2\n" +
" AND qta_evasa = 0 ";
;
if (!tipiEsclusi.isEmpty()) {
sqlInevasi = UtilityDB.addwhereCond(sqlInevasi, "(mtb_aart.cod_mtip IS NULL OR mtb_aart.cod_mtip not in (" + UtilityDB.listValueToString(tipiEsclusi) + "))", true);
sqlInevasi =
sqlInevasi
.replace("[DATA_ISPEZIONE]", UtilityDB.valueToString(dataCreation))
.replace("[COD_MDEP]", UtilityDB.valueToString(codMdep))
.replace("[GRUPPI_MERC]", UtilityDB.listValueToString(gruppiMerc))
.replace("[WHERE_COND_FORN]", whereCondFornitori);
List<String> inevasi = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sqlInevasi);
articoli = articoli.stream()
.filter(x -> !inevasi.contains(x))
.collect(Collectors.toList());
}
List<String> inevasi = UtilityDB.executeSimpleQueryOnlyFirstColumn(mdb.getPrimaryConnection(), sqlInevasi);
articoli = articoli.stream()
.filter(x -> !inevasi.contains(x))
.collect(Collectors.toList());
}
return articoli;