Vario
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-01-24 10:49:44 +01:00
parent a79ca8f47a
commit a97eb189d9
4 changed files with 46 additions and 309 deletions

View File

@@ -1,6 +1,5 @@
package it.integry.ems.migration;
import com.annimon.stream.Stream;
import com.gentlyweb.utils.GeneralUtils;
import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostContextConstruct;
@@ -80,12 +79,11 @@ public class MigrationComponent {
try {
advancedDataSources = multiDBTransactionManager.getActiveConnections();
advancedDataSources = Stream.of(advancedDataSources)
advancedDataSources = advancedDataSources.stream()
.filter(AdvancedDataSource::isInternalDb)
.toList();
} catch (Exception e) {
.collect(Collectors.toList());
} catch (SQLException e) {
advancedDataSources = new ArrayList<>();
e.printStackTrace();
logger.error("MigrationService - Init", e);
}
@@ -97,7 +95,6 @@ public class MigrationComponent {
} catch (Exception e) {
if(firstException == null) firstException = e;
logger.error("MigrationService (" + advancedDataSource.getProfileName() + ")", e);
e.printStackTrace();
}
}

View File

@@ -57,7 +57,7 @@ public class MigrationSetupService {
if (availableConnectionsModel.getDbName().equalsIgnoreCase("studioml") && UtilityDebug.isDebugExecution())
continue;
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(availableConnectionsModel.getProfileName())) {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(availableConnectionsModel)) {
List<StbMigrationStatus> stbMigrationStatuses = retrieveStatuses(multiDBTransactionManager);

View File

@@ -89,8 +89,8 @@ public class MesProductionControllerV2 {
@RequestParam(required = false) String flagEvaso,
@RequestParam(required = false) String codJfas,
@RequestParam(required = false) String codAnag,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) throws Exception {
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) throws Exception {
ServiceRestResponse response = new ServiceRestResponse(EsitoType.OK);
@@ -105,7 +105,7 @@ public class MesProductionControllerV2 {
ServiceRestResponse getOrdineLavorazione(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam int numOrd,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataOrd,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate dataOrd,
@RequestParam String gestione,
@RequestParam String codJfas
) throws Exception {

View File

@@ -12,16 +12,14 @@ import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityQuery;
import it.integry.ems_model.utility.UtilityString;
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.stereotype.Component;
import org.springframework.web.context.ContextLoader;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -51,8 +49,6 @@ public class ProductionOrderDataHandlerService {
if (!UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer()) {
looperService.add(() -> this.internalCacheOrdiniLavorazione(true, inevasiOrdersCachedData), 5 * 1000, ProductionOrderDataHandlerService.class.getName());
}
}
@@ -84,7 +80,7 @@ public class ProductionOrderDataHandlerService {
}
private void loadOrdiniProfile(boolean onlyInevasi, String dbName, String profileName, HashMap<String, HashMap<String, List<OrdineLavorazioneDTO>>> orderList) throws Exception {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false)){
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false)) {
Date startDate = new Date();
//Verifichiamo se la gestione del MES è abilitata
boolean gestioneAbilitata = isMESEnabled(multiDBTransactionManager);
@@ -122,12 +118,12 @@ public class ProductionOrderDataHandlerService {
return inputData.get(codJfas);
}
public List<OrdineLavorazioneDTO> getOrdiniLavorazioneSync(String flagEvaso, List<String> linee, Date startDate, Date endDate, String codAnag) throws Exception {
public List<OrdineLavorazioneDTO> getOrdiniLavorazioneSync(String flagEvaso, List<String> linee, LocalDate startDate, LocalDate endDate, String codAnag) throws Exception {
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
return getOrdiniLavorazione(multiDBTransactionManager, flagEvaso, linee, startDate, endDate, codAnag);
}
public List<OrdineLavorazioneDTO> getOrdiniLavorazione(String flagEvaso, List<String> linee, Date startDate, Date endDate, String codAnag) throws Exception {
public List<OrdineLavorazioneDTO> getOrdiniLavorazione(String flagEvaso, List<String> linee, LocalDate startDate, LocalDate endDate, String codAnag) throws Exception {
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
if (UtilityDebug.isIntegryServer()
@@ -154,20 +150,22 @@ public class ProductionOrderDataHandlerService {
return ordersList.stream()
.filter(x -> (UtilityString.isNullOrEmpty(flagEvaso) || UtilityString.isNull(x.getFlagOrdineEvaso(), "I").equalsIgnoreCase(flagEvaso)) &&
(startDate == null || x.getDataOrd().getTime() > startDate.getTime()) &&
(endDate == null || x.getDataOrd().getTime() < endDate.getTime()) &&
(startDate == null || UtilityLocalDate.localDateFromDate(x.getDataOrd()).isAfter(startDate)) &&
(endDate == null || UtilityLocalDate.localDateFromDate(x.getDataOrd()).isBefore(endDate)) &&
(UtilityString.isNullOrEmpty(codAnag) || x.getCodAnag().equalsIgnoreCase(codAnag)))
.collect(Collectors.toList());
}
}
public OrdineLavorazioneDTO getOrdineLavorazione(List<String> linee, String gestione, Date dataOrd, int numOrd) throws Exception {
List<OrdineLavorazioneDTO> ordini = getOrdiniLavorazione(null, linee, UtilityDate.getStartOfDay(dataOrd), UtilityDate.getEndOfDay(dataOrd), null);
public OrdineLavorazioneDTO getOrdineLavorazione(List<String> linee, String gestione, LocalDate dataOrd, int numOrd) throws Exception {
List<OrdineLavorazioneDTO> ordini = getOrdiniLavorazione(null, linee, dataOrd, dataOrd, null);
if (ordini == null || ordini.isEmpty()) {
return null;
}
return Stream.of(ordini)
.filter((order) -> UtilityDate.equals(order.getDataOrd(), dataOrd) && order.getGestione().equalsIgnoreCase(gestione) && order.getNumOrd() == numOrd)
return ordini.stream()
.filter((order) ->
UtilityLocalDate.localDateFromDate(order.getDataOrd()).isEqual(dataOrd) &&
order.getGestione().equalsIgnoreCase(gestione) && order.getNumOrd() == numOrd)
.findFirst()
.orElse(null);
@@ -187,300 +185,42 @@ public class ProductionOrderDataHandlerService {
.collect(Collectors.toList());
}
private List<OrdineLavorazioneDTO> getOrdiniLavorazione(MultiDBTransactionManager multiDBTransactionManager, String flagEvaso, List<String> linee, Date startDate, Date endDate, String codAnag) throws Exception {
String whereCondFlagEvaso;
String whereCondCodJfas = "";
private List<OrdineLavorazioneDTO> getOrdiniLavorazione(MultiDBTransactionManager multiDBTransactionManager, String flagEvaso, List<String> linee, LocalDate startDate, LocalDate endDate, String codAnag) throws Exception {
HashMap<String, String> setupGests = new HashMap<>();
if (startDate == null || endDate == null) {
setupGests = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP");
}
if (startDate == null) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
String days = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP", "EARLIER_DATE");
cal.add(Calendar.DATE, days != null ? Integer.parseInt(days) : -30);
startDate = cal.getTime();
startDate = LocalDate.now();
String days = UtilityHashMap.getValueIfExists(setupGests, "EARLIER_DATE");
startDate = startDate.plusDays(!UtilityString.isNullOrEmpty(days) ? Integer.parseInt(days) : -30);
}
if (endDate == null) {
final String ggMassimiOrdString = UtilityHashMap.getValueIfExists(setupGests, "GG_MASSIMI_ORD");
int ggMassimiOrd = UtilityString.isNullOrEmpty(ggMassimiOrdString) ? 14 : Integer.parseInt(ggMassimiOrdString);
int ggMassimiOrd;
try {
ggMassimiOrd = Integer.parseInt(setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP", "GG_MASSIMI_ORD"));
} catch (Exception e) {
logger.debug("Setup giorni massimi non configurata!", e);
ggMassimiOrd = 14;
}
endDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(endDate);
cal.add(Calendar.DATE, ggMassimiOrd);
endDate = cal.getTime();
endDate = LocalDate.now().plusDays(ggMassimiOrd);
}
String query;
boolean newMESFunction = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP", "FLAG_USE_NEW_GET_ORDERS");
if (newMESFunction) {
if (flagEvaso != null && (!flagEvaso.equalsIgnoreCase("I") && !flagEvaso.equalsIgnoreCase("E"))) {
throw new Exception("Errore durante l'interpretazione del campo \"flagEvaso\"");
}
query = "SELECT * FROM MES_GetWorkOrders(NULL, " +
UtilityDB.valueToString(startDate) + " , " +
UtilityDB.valueToString(endDate) + "," +
UtilityDB.valueToString(flagEvaso) + "," +
UtilityDB.valueToString(codAnag) + ")\n" +
"ORDER BY sort";
} else {
if (!UtilityString.isNullOrEmpty(flagEvaso)) {
if (!flagEvaso.equalsIgnoreCase("I") && !flagEvaso.equalsIgnoreCase("E")) {
throw new Exception("Errore durante l'interpretazione del campo \"flagEvaso\"");
}
if (flagEvaso.equalsIgnoreCase("I")) {
whereCondFlagEvaso = " AND (flag_evaso_prod = " + UtilityDB.valueToString(flagEvaso) + " or (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' and flag_evaso_prod = 'E'))";
whereCondFlagEvaso += " AND dtb_ordt.flag_evaso_forzato = 'N' ";
} else {
whereCondFlagEvaso = " AND flag_evaso_prod = " + UtilityDB.valueToString(flagEvaso) + " ";
whereCondFlagEvaso += " AND ISNULL(dtb_ordr.data_ord, dtb_ordt.data_ord) BETWEEN " + UtilityDB.valueDateToString(startDate, CommonConstants.DATE_FORMAT_YMD) +
" AND " + UtilityDB.valueDateToString(endDate, CommonConstants.DATE_FORMAT_YMD) + " AND dtb_ordt.flag_evaso_forzato = 'S'";
}
} else {
whereCondFlagEvaso = " AND dtb_ordr.data_ord BETWEEN " + UtilityDB.valueDateToString(startDate, CommonConstants.DATE_FORMAT_YMD) +
" AND " + UtilityDB.valueDateToString(endDate, CommonConstants.DATE_FORMAT_YMD);
}
if (linee != null && !linee.isEmpty()) {
whereCondCodJfas = " AND dtb_ord_steps.cod_jfas in ('" + Stream.of(linee).collect(com.annimon.stream.Collectors.joining("','")) + "')";
}
if (!UtilityString.isNullOrEmpty(codAnag)) {
whereCondCodJfas = " AND dtb_ordt.cod_anag = " + UtilityDB.valueToString(codAnag) + " ";
}
query = "SELECT dtb_ordt.cod_jcom," +
" dtb_ordr.data_ord AS data_ord_prod," +
" dtb_ordr.num_ord AS num_ord_prod," +
" dtb_ordr.riga_ord AS riga_ord_prod," +
" CASE WHEN CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()) THEN 'S' ELSE 'N' END AS flag_avviabile," +
" mtb_aart.flag_tracciabilita," +
" dtb_ordr.unt_ord," +
" dtb_ordr.rap_conv," +
" dtb_ordr.unt_ord2, " +
" CAST(ROUND(dtb_ordr.qta_ord2 / dtb_ordr.qta_ord, 5) AS NUMERIC(20, 5)) as rap_conv2, " +
" dtb_ordr.unt_ord3, " +
" CAST(ROUND(dtb_ordr.qta_ord3 / dtb_ordr.qta_ord, 5) AS NUMERIC(20, 5))as rap_conv3, " +
" ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod," +
" dtb_ordr.num_cnf * (case when mtb_aart.unt_mis in ('PZ','NR') then mtb_aart.qta_cnf" +
" else case WHEN mtb_aart.unt_mis2 in ('PZ','NR') then mtb_aart.qta_cnf/mtb_aart.rap_conv2" +
" else mtb_aart.qta_cnf end end) AS num_pezzi," +
" dtb_ordr.num_cnf," +
" mtb_aart.gg_scad_partita," +
" mtb_aart.qta_cnf," +
" CASE WHEN dtb_ordr.colli_pedana = 1 OR dtb_ordr.colli_pedana = 0 " +
" THEN " +
" CASE WHEN mtb_aart.colli_pedana = 1 OR mtb_aart.colli_pedana = 0 " +
" THEN 1 " +
" ELSE mtb_aart.colli_pedana END" +
" ELSE dtb_ordr.colli_pedana END AS colli_pedana," +
" dtb_ordr.num_cnf / CASE WHEN dtb_ordr.colli_pedana = 1 OR dtb_ordr.colli_pedana = 0" +
" THEN " +
" CASE WHEN mtb_aart.colli_pedana = 1 OR mtb_aart.colli_pedana = 0 " +
" THEN 1 " +
" ELSE mtb_aart.colli_pedana END " +
" ELSE dtb_ordr.colli_pedana END AS num_pedane," +
" dtb_ordr.pos_riga," +
" dtb_ordt.flag_evaso_prod," +
" dtb_ordt.flag_evaso_forzato," +
" CASE\n" +
" WHEN (dtb_ordt.flag_evaso_prod = 'I' or\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" THEN 'I'\n" +
" WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" +
" THEN flag_evaso_prod\n" +
" END as flag_ordine_evaso," +
" dtb_ordt.gestione," +
" dtb_ordt.data_ord," +
" dtb_ordt.cod_tcol_UL," +
" mtb_tcol.descrizione as descrizione_tcol," +
" dtb_ordt.cod_anag," +
" gtb_anag.rag_soc AS rag_soc_anag," +
" dtb_ordt.rif_ord," +
" dtb_ordt.cod_vdes," +
" dtb_ordt.cod_mdep," +
" dtb_ordt.num_ord," +
" dtb_ord_steps.cod_jfas," +
" dtb_ordr.partita_mag," +
" dtb_ordt.note AS note_lav," +
" mtb_partita_mag.data_scad," +
" dtb_ordt.cod_prod," +
" jtb_comt.descrizione AS descrizione_commessa, " +
" jtb_comt.data_cons AS data_cons_commessa, " +
" dtb_ordt.data_iniz_prod," +
" q.max_step," +
" CASE WHEN (mtb_aart.flag_qta_cnf_fissa = 'S' AND (mtb_aart.qta_cnf > 1 OR mtb_aart.colli_pedana > 1)) THEN 'Colli' ELSE jtb_cicl.unt_mis_prod END as unt_mis_prod," +
" CASE WHEN (mtb_aart.flag_qta_cnf_fissa = 'S' AND (mtb_aart.qta_cnf > 1 OR mtb_aart.colli_pedana > 1)) THEN dtb_ordt.colli_pedana ELSE jtb_cicl.qta_prod END as qta_batch_prod," +
" CASE WHEN (mtb_aart.qta_cnf > 1 OR mtb_aart.colli_pedana > 1) THEN mtb_aart.qta_cnf ELSE jtb_cicl.rap_conv_prod END as rap_conv_prod," +
" dtb_ord_steps.data_iniz," +
" dtb_ord_steps.data_fine," +
" case when dtb_ord_steps.qta_prod <> 0 then dtb_ord_steps.qta_prod else dtb_ordt.qta_prod end as qta_prod ," +
" dtb_ord_steps.hr_num," +
" dtb_ord_steps.descrizione_attivita, " +
" dtb_ord_steps.note AS note_step, " +
" jtb_prod_std.prod_std, " +
" q.elapsed_time," +
" SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite," +
" count(mtb_colr.num_collo) as udc_trasferiti," +
" dbo.F_suggestcodepartitamag(dtb_ordt.cod_prod+';'+CONVERT(varchar(10), getdate(), 111), 5) AS partita_mag_suggested, " + // TODO non utilizzato dopo commit pvm > 7/1/20 [OBSOLETA]
" CONVERT(DATETIME, dbo.f_suggestCodeDataScadPartitaMag(dtb_ordt.cod_prod+';'+CONVERT(VARCHAR(10), GETDATE(), 111), 0), 111) AS data_scad_suggested, " + // TODO non utilizzato dopo commit pvm > 7/1/20 [OBSOLETA]
" CASE WHEN q.max_step = 0" +
" THEN 'PROGRAMMATO'" +
" ELSE CASE WHEN data_fine IS NULL " +
" THEN 'IN CORSO'" +
" ELSE 'IN PAUSA'" +
" END" +
" END AS stato," +
" convert(int, SUM(ISNULL(mtb_colr.qta_col / (case when mtb_aart.unt_mis in ('PZ','NR') then 1 else " +
" case when mtb_aart.unt_mis2 in ('PZ','NR') then mtb_aart.rap_conv2 " +
" else 1 end end), 0))) AS pz_trasferiti," +
" mtb_aart.peso_kg," +
" dtb_ordt.data_cons_prod_max" +
" FROM (SELECT MAX(id_step) " +
" OVER ( PARTITION BY gestione, data_ord, num_ord, num_fase, cod_jfas) AS max_step_by_num_fase, " +
" * " +
" FROM dtb_ord_steps) dtb_ord_steps " +
" INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord " +
" AND dtb_ord_steps.num_ord = dtb_ordt.num_ord " +
" AND dtb_ord_steps.gestione = dtb_ordt.gestione " +
" LEFT OUTER JOIN (select cod_mdep, value as flag_carico_scarico_immediato " +
" from stb_gest_setup_depo " +
" where gest_name = 'CARICO_SCARICO_PF' and section = 'SETUP' and key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO')setupCaricoImmediato ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep " +
" LEFT OUTER JOIN (SELECT DISTINCT cod_jfas, " +
" FIRST_VALUE(prod_std) " +
" over (PARTITION BY cod_jfas ORDER BY data_iniz DESC) as prod_std " +
" FROM jtb_prod_std) jtb_prod_std ON dtb_ordt.cod_jfas = jtb_prod_std.cod_jfas " +
" LEFT OUTER JOIN mtb_partita_mag ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag " +
" AND dtb_ordt.cod_prod = mtb_partita_mag.cod_mart" +
" AND mtb_partita_mag.flag_stato = 'A'" +
" LEFT OUTER JOIN (SELECT mtb_colr.gestione," +
" mtb_colr.data_collo," +
" mtb_colr.num_collo," +
" mtb_colr.cod_mart," +
" mtb_colr.data_ord," +
" mtb_colr.num_ord," +
" sum(mtb_colr.qta_col) as qta_col," +
" sum(mtb_colr.num_cnf) as num_cnf" +
" FROM mtb_colr" +
" WHERE mtb_colr.gestione_rif is null" +
" and mtb_colr.data_collo_rif is null" +
" and mtb_colr.ser_collo_rif is null" +
" and mtb_colr.num_collo_rif is null" +
" AND exists (select * from mtb_colt \n" +
" where mtb_colr.gestione = mtb_colt.gestione and \n" +
" mtb_colr.data_collo = mtb_colt.data_collo and \n" +
" mtb_colr.ser_collo = mtb_colt.ser_collo and \n" +
" mtb_colr.num_collo = mtb_colt.num_collo and mtb_colt.segno = 1)" +
" group by mtb_colr.gestione, mtb_colr.data_collo, mtb_colr.num_collo, mtb_colr.cod_mart," +
" mtb_colr.data_ord, mtb_colr.num_ord) mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord" +
" AND dtb_ordt.gestione = mtb_colr.gestione" +
" AND dtb_ordt.num_ord = mtb_colr.num_ord " +
" LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom " +
" INNER JOIN (SELECT gestione," +
" data_ord," +
" num_ord," +
" MAX(id_step) AS max_step," +
" cod_jfas, " +
" SUM(DATEDIFF(S, data_iniz , ISNULL(data_fine,GETDATE()))) AS elapsed_time" +
" FROM dtb_ord_steps" +
" WHERE data_ord BETWEEN " + UtilityDB.valueDateToString(startDate, CommonConstants.DATE_FORMAT_YMD) +
" AND " + UtilityDB.valueDateToString(endDate, CommonConstants.DATE_FORMAT_YMD) +
" GROUP BY gestione, data_ord, num_ord, cod_jfas) q ON dtb_ord_steps.gestione = q.gestione " +
" AND dtb_ord_steps.data_ord = q.data_ord " +
" AND dtb_ord_steps.num_ord = q.num_ord " +
" AND dtb_ord_steps.id_step = q.max_step " +
" AND dtb_ord_steps.cod_jfas = q.cod_jfas " +
" LEFT OUTER JOIN dtb_ordr ON dtb_ordr.gestione = dtb_ordt.gestione_rif " +
" AND dtb_ordr.data_ord = dtb_ordt.data_ord_rif " +
" AND dtb_ordr.num_ord = dtb_ordt.num_ord_rif " +
" AND dtb_ordr.riga_ord = dtb_ordt.riga_ord_rif" +
" left outer join jtb_cicl on jtb_cicl.cod_prod = dtb_ordt.cod_prod " +
" LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod " +
" LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag " +
" LEFT OUTER JOIN mtb_tcol on dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol " +
" WHERE dtb_ordt.flag_annulla = 'N' AND " +
" dtb_ord_steps.flag_step_attivo = 'S' " +
whereCondFlagEvaso +
whereCondCodJfas +
" AND max_step_by_num_fase = max_step" +
" GROUP BY dtb_ordr.data_ord, " +
" dtb_ordr.num_ord, " +
" dtb_ordr.riga_ord, " +
" dtb_ordr.unt_ord, " +
" dtb_ordt.note, " +
" dtb_ordr.rap_conv, " +
" dtb_ordt.descrizione_prod, " +
" dtb_ordt.descr_estesa_prod, " +
" dtb_ordr.num_cnf, " +
" mtb_aart.qta_cnf, " +
" mtb_aart.peso_kg, " +
" mtb_aart.gg_scad_partita, " +
" dtb_ordr.pos_riga, " +
" dtb_ordt.flag_evaso_prod, " +
" dtb_ordt.flag_evaso_forzato, " +
" dtb_ordt.gestione, " +
" dtb_ordt.data_ord, " +
" dtb_ordt.num_ord, " +
" dtb_ord_steps.cod_jfas, " +
" dtb_ordt.cod_jcom, " +
" dtb_ordr.partita_mag, " +
" mtb_partita_mag.data_scad," +
" mtb_partita_mag.flag_stato," +
" dtb_ordt.cod_prod, " +
" dtb_ordt.data_iniz_prod, " +
" q.max_step, " +
" dtb_ord_steps.data_iniz, " +
" dtb_ord_steps.data_fine, " +
" dtb_ordt.cod_tcol_UL, " +
" dtb_ordt.cod_anag, " +
" gtb_anag.rag_soc, " +
" dtb_ordt.rif_ord, " +
" dtb_ordt.cod_vdes, " +
" dtb_ordt.cod_mdep, " +
" mtb_aart.colli_pedana, " +
" mtb_aart.flag_qta_cnf_fissa, " +
" dtb_ordt.colli_pedana, " +
" dtb_ord_steps.qta_prod, " +
" dtb_ordt.qta_prod, " +
" jtb_prod_std.prod_std, " +
" jtb_comt.descrizione, " +
" jtb_comt.data_cons, " +
" q.elapsed_time, " +
" dtb_ordr.colli_pedana, " +
" dtb_ord_steps.hr_num, " +
" mtb_aart.unt_mis," +
" mtb_aart.unt_mis2," +
" mtb_aart.rap_conv2, " +
" dtb_ordr.unt_ord2, " +
" dtb_ordr.unt_ord3, " +
" dtb_ordr.qta_ord2, " +
" dtb_ordr.qta_ord, " +
" dtb_ordr.qta_ord3, " +
" jtb_cicl.qta_prod, " +
" jtb_cicl.rap_conv_prod, " +
" dtb_ord_steps.descrizione_attivita, " +
" dtb_ord_steps.note, " +
" jtb_cicl.unt_mis_prod, " +
" mtb_tcol.descrizione," +
" mtb_aart.flag_tracciabilita," +
" setupCaricoImmediato.flag_carico_scarico_immediato, " +
" dtb_ordt.data_cons_prod_max" +
" ORDER BY dtb_ordr.data_ord, dtb_ordr.num_ord, dtb_ordr.pos_riga, dtb_ordt.num_ord";
if (flagEvaso != null && (!flagEvaso.equalsIgnoreCase("I") && !flagEvaso.equalsIgnoreCase("E"))) {
throw new Exception("Errore durante l'interpretazione del campo \"flagEvaso\"");
}
String query = "SELECT * FROM MES_GetWorkOrders(NULL, " +
UtilityDB.valueToString(startDate) + " , " +
UtilityDB.valueToString(endDate) + "," +
UtilityDB.valueToString(flagEvaso) + "," +
UtilityDB.valueToString(codAnag) + ")\n" +
"ORDER BY sort";
List<OrdineLavorazioneDTO> ordiniLavorazioneList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, OrdineLavorazioneDTO.class);
if(ordiniLavorazioneList != null && linee != null) {
if (ordiniLavorazioneList != null && linee != null) {
linee = linee.stream().map(String::toLowerCase).collect(Collectors.toList());
final List<String> finalLinee = linee;
@@ -554,8 +294,8 @@ public class ProductionOrderDataHandlerService {
if (grpMerc == null || grpMerc.isEmpty())
return ordiniLavorazioneList;
Stream.of(ordiniLavorazioneList)
.forEach(order -> {
ordiniLavorazioneList.parallelStream().
forEach(order -> {
final Map<String, List<OrdineInevasoGroupMercDTO>> groups = grpMerc.stream()
.filter(x -> Objects.equals(x.getNumOrd(), order.getNumOrd()) &&
x.getDataOrd().equals(order.getDataOrd()) &&