Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -1,35 +1,33 @@
|
||||
package it.integry.ems.service.production;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import it.integry.annotations.PostWebServerConstruct;
|
||||
import it.integry.ems.looper.service.LooperService;
|
||||
import it.integry.ems.service.dto.production.MRPDailyConsumiDTO;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
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.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.ContextLoader;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Component
|
||||
public class MrpConsumiHandlerService {
|
||||
|
||||
private final Logger logger = LogManager.getLogger();
|
||||
|
||||
@Autowired
|
||||
private LooperService looperService;
|
||||
|
||||
@Autowired
|
||||
private SettingsModel settingsModel;
|
||||
|
||||
@@ -39,69 +37,43 @@ public class MrpConsumiHandlerService {
|
||||
@Autowired
|
||||
public SetupGest setupGest;
|
||||
|
||||
@Autowired
|
||||
private MrpSetupHandlerService mrpSetupHandlerService;
|
||||
|
||||
private final HashMap<String, HashMap<String, Map<String, List<MRPDailyConsumiDTO>>>> consumiCachedData = new HashMap<>();
|
||||
|
||||
@PostWebServerConstruct
|
||||
public void init() {
|
||||
if ( saveCache() ) {
|
||||
looperService.add(() -> this.internalCacheConsumi(consumiCachedData), (UtilityDebug.isDebugExecution()?5:1) * 60 * 1000, MrpConsumiHandlerService.class.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean saveCache(){
|
||||
return !UtilityDebug.isDebugExecution() && !UtilityDebug.isIntegryServer() && settingsModel.isPrimaryInstance();
|
||||
}
|
||||
|
||||
public void internalCacheConsumi(HashMap<String, HashMap<String, Map<String, List<MRPDailyConsumiDTO>>>> consumiList) {
|
||||
try {
|
||||
@Scheduled(fixedDelay = 1, timeUnit = TimeUnit.MINUTES, initialDelay = 60, zone = "Europe/Rome")
|
||||
private void updateData() throws Exception {
|
||||
String historyProfileDb = settingsController.getHistoryProfileDb();
|
||||
|
||||
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections()
|
||||
.stream()
|
||||
.filter(AvailableConnectionsModel::getInternalDb)
|
||||
.filter(x -> !historyProfileDb.equalsIgnoreCase(x.getProfileName()))
|
||||
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
|
||||
|
||||
for (String dbName : databases.keySet()) {
|
||||
String profileName = databases.get(dbName).get(0).getProfileName();
|
||||
final List<AvailableConnectionsModel> availableConnections = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true, historyProfileDb);
|
||||
|
||||
|
||||
loadConsumi(dbName,profileName,consumiList);
|
||||
for (AvailableConnectionsModel connectionModel : availableConnections) {
|
||||
boolean isEnabled = mrpSetupHandlerService.isGestioneAbilitata(connectionModel.getDbName());
|
||||
if(!isEnabled) continue;
|
||||
|
||||
}
|
||||
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(connectionModel, false)) {
|
||||
int timingId = UtilityTiming.startNewTiming(MrpConsumiHandlerService.class.getSimpleName() + " (" + connectionModel.getProfileName() + ")");
|
||||
|
||||
internalCacheConsumi(multiDBTransactionManager);
|
||||
|
||||
UtilityTiming.endTiming(timingId, true);
|
||||
} catch (Exception ex) {
|
||||
logger.error(ex.getMessage(), ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadConsumi(String dbName, String profileName, HashMap<String, HashMap<String, Map<String, List<MRPDailyConsumiDTO>>>> consumiList) throws Exception {
|
||||
Date startDate = new Date();
|
||||
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
|
||||
|
||||
boolean gestioneAbilitata = isGestioneAbilitata(multiDBTransactionManager);
|
||||
private void internalCacheConsumi(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
String dbName = multiDBTransactionManager.getPrimaryDatasource().getDbName();
|
||||
|
||||
if ( gestioneAbilitata ) {
|
||||
Map<String, List<MRPDailyConsumiDTO>> consumi = getConsumi(multiDBTransactionManager);
|
||||
HashMap<String, Map<String, List<MRPDailyConsumiDTO>>> section = getSectionConsumiByDBName(consumiList, dbName);
|
||||
HashMap<String, Map<String, List<MRPDailyConsumiDTO>>> section = getSectionConsumiByDBName(consumiCachedData, dbName);
|
||||
|
||||
section.clear();
|
||||
section.put(dbName, consumi);
|
||||
|
||||
}
|
||||
logger.trace(MrpConsumiHandlerService.class.getSimpleName() + " - Consumi: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
|
||||
|
||||
multiDBTransactionManager.closeAll();
|
||||
}
|
||||
|
||||
private static boolean isGestioneAbilitata(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
String sql =
|
||||
"SELECT CAST(COUNT(*) AS BIT)\n" +
|
||||
"FROM stb_abil\n" +
|
||||
"WHERE cod_opz IN ('WG125') \n" +
|
||||
" AND flag_abil <> 'N'";
|
||||
boolean gestioneAbilitata = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
return gestioneAbilitata;
|
||||
}
|
||||
|
||||
private HashMap<String, Map<String, List<MRPDailyConsumiDTO>>> getSectionConsumiByDBName(HashMap<String, HashMap<String, Map<String, List<MRPDailyConsumiDTO>>>> inputData, String profileDb) {
|
||||
@@ -237,13 +209,14 @@ public class MrpConsumiHandlerService {
|
||||
|
||||
return whereCond;
|
||||
}
|
||||
|
||||
public Map<String, List<MRPDailyConsumiDTO>> getConsumi() throws Exception {
|
||||
MultiDBTransactionManager multiDBTransactionManager = ContextLoader.getCurrentWebApplicationContext().getBean(MultiDBTransactionManager.class);
|
||||
String dbName = multiDBTransactionManager.getPrimaryDatasource().getDbName();
|
||||
|
||||
if (!saveCache()) {
|
||||
if (!mrpSetupHandlerService.isGestioneAbilitata(dbName)) {
|
||||
return getConsumi(multiDBTransactionManager);
|
||||
} else {
|
||||
String dbName = multiDBTransactionManager.getPrimaryDatasource().getDbName();
|
||||
Map<String, List<MRPDailyConsumiDTO>> consumiList = getSectionConsumiByDBName(consumiCachedData, dbName).get(dbName);
|
||||
if (consumiList == null)
|
||||
return getConsumi(multiDBTransactionManager);
|
||||
|
||||
@@ -7,6 +7,7 @@ import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.settings.SettingsController;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
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.Query;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
@@ -37,18 +38,15 @@ public class MrpSetupHandlerService {
|
||||
@Autowired
|
||||
public SetupGest setupGest;
|
||||
|
||||
private final HashMap<String, HashMap<String, List<MRPDailySetupSottogruppiDTO>>> setupSottogruppiCachedData = new HashMap<>();
|
||||
|
||||
private final HashMap<String, HashMap<String, List<MRPDailySetupGruppiDTO>>> setupGruppiCachedData = new HashMap<>();
|
||||
|
||||
|
||||
private boolean canBeExecuted = false;
|
||||
private final HashMap<String, Boolean> executionPermission = new HashMap<>();
|
||||
|
||||
private final HashMap<String, HashMap<String, List<MRPDailySetupSottogruppiDTO>>> setupSottogruppiCachedData = new HashMap<>();
|
||||
private final HashMap<String, HashMap<String, List<MRPDailySetupGruppiDTO>>> setupGruppiCachedData = new HashMap<>();
|
||||
|
||||
@Scheduled(fixedDelay = 1, timeUnit = TimeUnit.HOURS, zone = "Europe/Rome")
|
||||
private void refreshCronPermission() throws Exception {
|
||||
canBeExecuted = true;
|
||||
// canBeExecuted = !UtilityDebug.isDebugExecution() && settingsModel.isPrimaryInstance() && !UtilityDebug.isIntegryServer();
|
||||
canBeExecuted = !UtilityDebug.isDebugExecution() && settingsModel.isPrimaryInstance() && !UtilityDebug.isIntegryServer();
|
||||
if (!canBeExecuted) return;
|
||||
|
||||
try {
|
||||
@@ -90,16 +88,14 @@ public class MrpSetupHandlerService {
|
||||
|
||||
|
||||
for (AvailableConnectionsModel connectionModel : availableConnections) {
|
||||
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(connectionModel, false)) {
|
||||
|
||||
boolean isEnabled = isGestioneAbilitata(connectionModel.getDbName());
|
||||
if (!isEnabled) continue;
|
||||
|
||||
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(connectionModel, false)) {
|
||||
int timingId = UtilityTiming.startNewTiming(MrpSetupHandlerService.class.getSimpleName() + " (" + connectionModel.getProfileName() + ")");
|
||||
|
||||
if (isEnabled) {
|
||||
internalSottogruppoSetupCache(multiDBTransactionManager);
|
||||
internalGruppoSetupCache(multiDBTransactionManager);
|
||||
}
|
||||
|
||||
UtilityTiming.endTiming(timingId, true);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user