|
|
|
|
@@ -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()) &&
|
|
|
|
|
|