This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
package it.integry.ems.migration;
|
package it.integry.ems.migration;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
import com.gentlyweb.utils.GeneralUtils;
|
import com.gentlyweb.utils.GeneralUtils;
|
||||||
import it.integry.annotations.PostContextAutowired;
|
import it.integry.annotations.PostContextAutowired;
|
||||||
import it.integry.annotations.PostContextConstruct;
|
import it.integry.annotations.PostContextConstruct;
|
||||||
@@ -80,12 +79,11 @@ public class MigrationComponent {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
advancedDataSources = multiDBTransactionManager.getActiveConnections();
|
advancedDataSources = multiDBTransactionManager.getActiveConnections();
|
||||||
advancedDataSources = Stream.of(advancedDataSources)
|
advancedDataSources = advancedDataSources.stream()
|
||||||
.filter(AdvancedDataSource::isInternalDb)
|
.filter(AdvancedDataSource::isInternalDb)
|
||||||
.toList();
|
.collect(Collectors.toList());
|
||||||
} catch (Exception e) {
|
} catch (SQLException e) {
|
||||||
advancedDataSources = new ArrayList<>();
|
advancedDataSources = new ArrayList<>();
|
||||||
e.printStackTrace();
|
|
||||||
logger.error("MigrationService - Init", e);
|
logger.error("MigrationService - Init", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +95,6 @@ public class MigrationComponent {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if(firstException == null) firstException = e;
|
if(firstException == null) firstException = e;
|
||||||
logger.error("MigrationService (" + advancedDataSource.getProfileName() + ")", e);
|
logger.error("MigrationService (" + advancedDataSource.getProfileName() + ")", e);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class MigrationSetupService {
|
|||||||
if (availableConnectionsModel.getDbName().equalsIgnoreCase("studioml") && UtilityDebug.isDebugExecution())
|
if (availableConnectionsModel.getDbName().equalsIgnoreCase("studioml") && UtilityDebug.isDebugExecution())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(availableConnectionsModel.getProfileName())) {
|
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(availableConnectionsModel)) {
|
||||||
|
|
||||||
List<StbMigrationStatus> stbMigrationStatuses = retrieveStatuses(multiDBTransactionManager);
|
List<StbMigrationStatus> stbMigrationStatuses = retrieveStatuses(multiDBTransactionManager);
|
||||||
|
|
||||||
|
|||||||
@@ -89,8 +89,8 @@ public class MesProductionControllerV2 {
|
|||||||
@RequestParam(required = false) String flagEvaso,
|
@RequestParam(required = false) String flagEvaso,
|
||||||
@RequestParam(required = false) String codJfas,
|
@RequestParam(required = false) String codJfas,
|
||||||
@RequestParam(required = false) String codAnag,
|
@RequestParam(required = false) String codAnag,
|
||||||
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
|
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
|
||||||
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) throws Exception {
|
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) throws Exception {
|
||||||
|
|
||||||
ServiceRestResponse response = new ServiceRestResponse(EsitoType.OK);
|
ServiceRestResponse response = new ServiceRestResponse(EsitoType.OK);
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ public class MesProductionControllerV2 {
|
|||||||
ServiceRestResponse getOrdineLavorazione(HttpServletRequest request,
|
ServiceRestResponse getOrdineLavorazione(HttpServletRequest request,
|
||||||
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||||
@RequestParam int numOrd,
|
@RequestParam int numOrd,
|
||||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataOrd,
|
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate dataOrd,
|
||||||
@RequestParam String gestione,
|
@RequestParam String gestione,
|
||||||
@RequestParam String codJfas
|
@RequestParam String codJfas
|
||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
|||||||
@@ -12,16 +12,14 @@ import it.integry.ems.settings.SettingsController;
|
|||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
import it.integry.ems.utility.UtilityDebug;
|
import it.integry.ems.utility.UtilityDebug;
|
||||||
import it.integry.ems_model.service.SetupGest;
|
import it.integry.ems_model.service.SetupGest;
|
||||||
import it.integry.ems_model.utility.UtilityDB;
|
import it.integry.ems_model.utility.*;
|
||||||
import it.integry.ems_model.utility.UtilityDate;
|
|
||||||
import it.integry.ems_model.utility.UtilityQuery;
|
|
||||||
import it.integry.ems_model.utility.UtilityString;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.context.ContextLoader;
|
import org.springframework.web.context.ContextLoader;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -51,8 +49,6 @@ public class ProductionOrderDataHandlerService {
|
|||||||
if (!UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer()) {
|
if (!UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer()) {
|
||||||
looperService.add(() -> this.internalCacheOrdiniLavorazione(true, inevasiOrdersCachedData), 5 * 1000, ProductionOrderDataHandlerService.class.getName());
|
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 {
|
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();
|
Date startDate = new Date();
|
||||||
//Verifichiamo se la gestione del MES è abilitata
|
//Verifichiamo se la gestione del MES è abilitata
|
||||||
boolean gestioneAbilitata = isMESEnabled(multiDBTransactionManager);
|
boolean gestioneAbilitata = isMESEnabled(multiDBTransactionManager);
|
||||||
@@ -122,12 +118,12 @@ public class ProductionOrderDataHandlerService {
|
|||||||
return inputData.get(codJfas);
|
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);
|
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
|
||||||
return getOrdiniLavorazione(multiDBTransactionManager, flagEvaso, linee, startDate, endDate, codAnag);
|
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);
|
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
|
||||||
|
|
||||||
if (UtilityDebug.isIntegryServer()
|
if (UtilityDebug.isIntegryServer()
|
||||||
@@ -154,20 +150,22 @@ public class ProductionOrderDataHandlerService {
|
|||||||
|
|
||||||
return ordersList.stream()
|
return ordersList.stream()
|
||||||
.filter(x -> (UtilityString.isNullOrEmpty(flagEvaso) || UtilityString.isNull(x.getFlagOrdineEvaso(), "I").equalsIgnoreCase(flagEvaso)) &&
|
.filter(x -> (UtilityString.isNullOrEmpty(flagEvaso) || UtilityString.isNull(x.getFlagOrdineEvaso(), "I").equalsIgnoreCase(flagEvaso)) &&
|
||||||
(startDate == null || x.getDataOrd().getTime() > startDate.getTime()) &&
|
(startDate == null || UtilityLocalDate.localDateFromDate(x.getDataOrd()).isAfter(startDate)) &&
|
||||||
(endDate == null || x.getDataOrd().getTime() < endDate.getTime()) &&
|
(endDate == null || UtilityLocalDate.localDateFromDate(x.getDataOrd()).isBefore(endDate)) &&
|
||||||
(UtilityString.isNullOrEmpty(codAnag) || x.getCodAnag().equalsIgnoreCase(codAnag)))
|
(UtilityString.isNullOrEmpty(codAnag) || x.getCodAnag().equalsIgnoreCase(codAnag)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrdineLavorazioneDTO getOrdineLavorazione(List<String> linee, String gestione, Date dataOrd, int numOrd) throws Exception {
|
public OrdineLavorazioneDTO getOrdineLavorazione(List<String> linee, String gestione, LocalDate dataOrd, int numOrd) throws Exception {
|
||||||
List<OrdineLavorazioneDTO> ordini = getOrdiniLavorazione(null, linee, UtilityDate.getStartOfDay(dataOrd), UtilityDate.getEndOfDay(dataOrd), null);
|
List<OrdineLavorazioneDTO> ordini = getOrdiniLavorazione(null, linee, dataOrd, dataOrd, null);
|
||||||
if (ordini == null || ordini.isEmpty()) {
|
if (ordini == null || ordini.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return Stream.of(ordini)
|
return ordini.stream()
|
||||||
.filter((order) -> UtilityDate.equals(order.getDataOrd(), dataOrd) && order.getGestione().equalsIgnoreCase(gestione) && order.getNumOrd() == numOrd)
|
.filter((order) ->
|
||||||
|
UtilityLocalDate.localDateFromDate(order.getDataOrd()).isEqual(dataOrd) &&
|
||||||
|
order.getGestione().equalsIgnoreCase(gestione) && order.getNumOrd() == numOrd)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
|
||||||
@@ -187,300 +185,42 @@ public class ProductionOrderDataHandlerService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<OrdineLavorazioneDTO> getOrdiniLavorazione(MultiDBTransactionManager multiDBTransactionManager, String flagEvaso, List<String> linee, Date startDate, Date endDate, String codAnag) throws Exception {
|
private List<OrdineLavorazioneDTO> getOrdiniLavorazione(MultiDBTransactionManager multiDBTransactionManager, String flagEvaso, List<String> linee, LocalDate startDate, LocalDate endDate, String codAnag) throws Exception {
|
||||||
String whereCondFlagEvaso;
|
|
||||||
String whereCondCodJfas = "";
|
HashMap<String, String> setupGests = new HashMap<>();
|
||||||
|
if (startDate == null || endDate == null) {
|
||||||
|
setupGests = setupGest.getSetupSection(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP");
|
||||||
|
}
|
||||||
|
|
||||||
if (startDate == null) {
|
if (startDate == null) {
|
||||||
Calendar cal = Calendar.getInstance();
|
startDate = LocalDate.now();
|
||||||
cal.setTime(new Date());
|
String days = UtilityHashMap.getValueIfExists(setupGests, "EARLIER_DATE");
|
||||||
String days = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP", "EARLIER_DATE");
|
|
||||||
cal.add(Calendar.DATE, days != null ? Integer.parseInt(days) : -30);
|
startDate = startDate.plusDays(!UtilityString.isNullOrEmpty(days) ? Integer.parseInt(days) : -30);
|
||||||
startDate = cal.getTime();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (endDate == null) {
|
if (endDate == null) {
|
||||||
|
final String ggMassimiOrdString = UtilityHashMap.getValueIfExists(setupGests, "GG_MASSIMI_ORD");
|
||||||
|
int ggMassimiOrd = UtilityString.isNullOrEmpty(ggMassimiOrdString) ? 14 : Integer.parseInt(ggMassimiOrdString);
|
||||||
|
|
||||||
int ggMassimiOrd;
|
endDate = LocalDate.now().plusDays(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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String query;
|
if (flagEvaso != null && (!flagEvaso.equalsIgnoreCase("I") && !flagEvaso.equalsIgnoreCase("E"))) {
|
||||||
boolean newMESFunction = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "MES", "SETUP", "FLAG_USE_NEW_GET_ORDERS");
|
throw new Exception("Errore durante l'interpretazione del campo \"flagEvaso\"");
|
||||||
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";
|
|
||||||
}
|
}
|
||||||
|
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);
|
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());
|
linee = linee.stream().map(String::toLowerCase).collect(Collectors.toList());
|
||||||
|
|
||||||
final List<String> finalLinee = linee;
|
final List<String> finalLinee = linee;
|
||||||
@@ -554,8 +294,8 @@ public class ProductionOrderDataHandlerService {
|
|||||||
if (grpMerc == null || grpMerc.isEmpty())
|
if (grpMerc == null || grpMerc.isEmpty())
|
||||||
return ordiniLavorazioneList;
|
return ordiniLavorazioneList;
|
||||||
|
|
||||||
Stream.of(ordiniLavorazioneList)
|
ordiniLavorazioneList.parallelStream().
|
||||||
.forEach(order -> {
|
forEach(order -> {
|
||||||
final Map<String, List<OrdineInevasoGroupMercDTO>> groups = grpMerc.stream()
|
final Map<String, List<OrdineInevasoGroupMercDTO>> groups = grpMerc.stream()
|
||||||
.filter(x -> Objects.equals(x.getNumOrd(), order.getNumOrd()) &&
|
.filter(x -> Objects.equals(x.getNumOrd(), order.getNumOrd()) &&
|
||||||
x.getDataOrd().equals(order.getDataOrd()) &&
|
x.getDataOrd().equals(order.getDataOrd()) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user