Aggiunto servizio che aggiorna endpoint portale Web

This commit is contained in:
2025-08-04 17:26:27 +02:00
parent c8200f3690
commit 518263d955
23 changed files with 124 additions and 46 deletions

View File

@@ -90,7 +90,7 @@ public class EmsCoreDBLoader {
futureTasks.add(() -> {
try {
Connection connection = connectionPool.getConnection(modelAtomicReference.get().getProfileName());
Connection connection = connectionPool.getConnection(modelAtomicReference.get());
String sql = "SELECT db_distributore FROM azienda";
String dbDistributore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);

View File

@@ -12,7 +12,8 @@ import it.integry.ems.Import.base.IEntityImporter;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.Import.enums.EntityImportType;
import it.integry.ems.dto.*;
import it.integry.ems.dto.CreateZipDTO;
import it.integry.ems.dto.EntityHierarchy;
import it.integry.ems.dto.info.ApplicationInfoDTO;
import it.integry.ems.dto.info.DatabaseEngineInfoDTO;
import it.integry.ems.dto.info.DatabaseInfoDTO;
@@ -853,7 +854,7 @@ public class EmsServices {
if (UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer())
throw new Exception("Cannot export server info in DEBUG mode");
multiDBTransactionManager.setPrimaryDs(settingsModel.getDefaultProfile());
multiDBTransactionManager.setPrimaryDB(settingsModel.getDefaultProfile());
HashMap<String, Object> arguments = new HashMap<>();
@@ -1106,7 +1107,7 @@ public class EmsServices {
}
private void importClientieOrdiniQuore() throws Exception {
try (Connection connection = basicConnectionPool.getConnection(settingsModel.getDefaultProfile())) {
try (Connection connection = basicConnectionPool.getConnection(settingsModel.findConnectionModel(settingsModel.getDefaultProfile()))) {
boolean enabled = Boolean.parseBoolean(setupGest.getSetup(connection,
"IMPORT_ORDINI WEB", "CONQUIST", "ENABLED"));
String folder = setupGest.getSetup(connection, "IMPORT_ORDINI WEB", "CONQUIST", "FOLDER");

View File

@@ -0,0 +1,15 @@
package it.integry.ems.service.dto;
public class UpdatePvmEndpointRequestDTO {
private String endpoint;
public String getEndpoint() {
return endpoint;
}
public UpdatePvmEndpointRequestDTO setEndpoint(String endpoint) {
this.endpoint = endpoint;
return this;
}
}

View File

@@ -206,6 +206,14 @@ public class SettingsModel implements InitializingBean {
return dbName;
}
public AvailableConnectionsModel findConnectionModel(String profileName) {
return getAvailableConnections().stream()
.filter(x -> x.getProfileName().equalsIgnoreCase(profileName))
.findFirst()
.orElse(null);
}
@Override
public void afterPropertiesSet() {
instance = this;

View File

@@ -94,17 +94,17 @@ public class BasicConnectionPool {
return ds;
}
public Connection getConnection(String profileName) throws Exception {
String dbName = settingsModel.getDbNameFromProfileDb(profileName);
if (dbName == null) {
public Connection getConnection(AvailableConnectionsModel connectionsModel) throws Exception {
if (connectionsModel == null) {
return null;
}
String dbName = connectionsModel.getDbName();
poolLock.lock();
try {
if (!registeredDatasources.containsKey(dbName)) {
throw new IllegalArgumentException("No datasource registered for profile: " + profileName);
throw new IllegalArgumentException("No datasource registered for profile: " + connectionsModel.getProfileName());
}
DataSource ds = registeredDatasources.get(dbName);
@@ -114,12 +114,4 @@ public class BasicConnectionPool {
}
}
private AvailableConnectionsModel findConnectionModel(String profileName) {
return settingsModel.getAvailableConnections().stream()
.filter(x -> x.getProfileName().equalsIgnoreCase(profileName))
.findFirst()
.orElse(null);
}
}

View File

@@ -47,10 +47,12 @@ public class MultiDBTransactionManager implements AutoCloseable {
public MultiDBTransactionManager() {
connectionPool = ApplicationContextProvider.getApplicationContext().getBean(BasicConnectionPool.class);
settingsModel = ApplicationContextProvider.getApplicationContext().getBean(SettingsModel.class);
}
public MultiDBTransactionManager(BasicConnectionPool connectionPool) throws Exception {
this.connectionPool = connectionPool;
settingsModel = ApplicationContextProvider.getApplicationContext().getBean(SettingsModel.class);
}
public MultiDBTransactionManager(AvailableConnectionsModel connectionsModel) throws Exception {
@@ -68,7 +70,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
public MultiDBTransactionManager(String profileDb, boolean enableLog) throws Exception {
this();
this.enableLog = enableLog;
this.setPrimaryDs(profileDb);
this.setPrimaryDB(profileDb);
}
@@ -82,7 +84,7 @@ public class MultiDBTransactionManager implements AutoCloseable {
if (requestData != null && requestData.isValidProfileDB()) {
profileDb = requestData.getProfileDB();
}
this.setPrimaryDs(profileDb);
this.setPrimaryDB(profileDb);
} catch (Exception ex) {
logger.error("Errore durante la connessione al DB.", ex);
}
@@ -98,7 +100,8 @@ public class MultiDBTransactionManager implements AutoCloseable {
}
public void addConnection(String profileName, boolean isDistributore) throws Exception {
Connection connection = connectionPool.getConnection(profileName);
AvailableConnectionsModel availableConnectionsModel = settingsModel.findConnectionModel(profileName);
Connection connection = connectionPool.getConnection(availableConnectionsModel);
this.addConnection(connection, isDistributore);
}
@@ -279,14 +282,23 @@ public class MultiDBTransactionManager implements AutoCloseable {
* @throws Exception
*/
public void setPrimaryDs(String profileDb) throws Exception {
public void setPrimaryDB(String profileDb) throws Exception {
if (!SettingsModel.getInstance().isValidConnection(profileDb)) {
throw new Exception(String.format("Configurazione DB non trovata o dati mancanti (%s)", profileDb));
}
AvailableConnectionsModel connectionModel = settingsModel.findConnectionModel(profileDb);
setPrimaryDB(connectionModel);
}
public void setPrimaryDB(AvailableConnectionsModel connectionModel) throws Exception {
this.close();
primaryConnection = connectionPool.getConnection(profileDb);
if (connectionModel == null) {
throw new IllegalArgumentException("Connection model cannot be null");
}
primaryConnection = connectionPool.getConnection(connectionModel);
this.allConnections = new ArrayList<>();
this.addConnection(primaryConnection, false);

View File

@@ -1634,7 +1634,7 @@ public class ActivityService {
try {
m.addConnection(historyProfileDb);
m.setPrimaryDs(historyProfileDb);
m.setPrimaryDB(historyProfileDb);
String sql = "select stb_activity.activity_id,\n" +
" stb_activity.parent_activity_id,\n" +

View File

@@ -141,7 +141,7 @@ public class SteUPService {
toReturn.put("user", userData);
profileDb = userData.get("profile_db").toString();
multiDBTransactionManager.setPrimaryDs(profileDb);
multiDBTransactionManager.setPrimaryDB(profileDb);
String sql = "SELECT mtb_depo.cod_mdep, mtb_depo.descrizione, mtb_depo.indirizzo, mtb_depo.citta, mtb_depo.cap, mtb_depo.prov " +
"FROM mtb_depo INNER JOIN wtb_depo ON wtb_depo.cod_mdep = mtb_depo.cod_mdep " +
@@ -952,7 +952,7 @@ public class SteUPService {
public void uploadAttachmentTmp() throws Exception {
try (Connection connection = basicConnectionPool.getConnection("WINACT")) {
try (Connection connection = basicConnectionPool.getConnection(settingsModel.findConnectionModel("WINACT"))) {
String sql =
"select a.activity_id, t.activity_id_new, f.file_name, f.last_upd " +

View File

@@ -52,7 +52,7 @@ public class RegCorrispettivoService {
if (!UtilityString.isNullOrEmpty(profileDBFromSetupGest) && !profileDBFromSetupGest.equalsIgnoreCase(multiDBTransactionManager.getPrimaryConnection().getProfileName())) {
multiDBTransactionManager.close();
multiDBTransactionManager.setPrimaryDs(profileDBFromSetupGest);
multiDBTransactionManager.setPrimaryDB(profileDBFromSetupGest);
}
String campoTipoIncasso = (raggruppaPerConto ? "cod_ccon" : "tipo_inca");

View File

@@ -1191,7 +1191,7 @@ public class DocumentiAcquistoImportService {
MultiDBTransactionManager m = new MultiDBTransactionManager();
try {
m.setPrimaryDs(connection.getProfileName());
m.setPrimaryDB(connection.getProfileName());
if (!isWdtb) {
UpdProgOrdini(m, (DtbDoct) dtbBaseDoct, -1);

View File

@@ -200,7 +200,7 @@ public class DocumentiConsortileService {
// Connessione al database dell'azienda agricola
if (j == 0) {
multiDBTransactionManagerAzAgr.setPrimaryDs(profileDB);
multiDBTransactionManagerAzAgr.setPrimaryDB(profileDB);
}
// Creazione documento vendita per azienda agricola
@@ -373,7 +373,7 @@ public class DocumentiConsortileService {
if (j == 0) {
DataSource dsSync = new DataSource();
dsSync.initialize(profileDB);
multiDBTransactionManagerAzAgr.setPrimaryDs(profileDB);
multiDBTransactionManagerAzAgr.setPrimaryDB(profileDB);
}
// Creazione documento vendita per azienda agricola

View File

@@ -89,7 +89,7 @@ public class ImportResiDaClienteService {
String userNameWeb = (String) dati.get("user_name");
if (!UtilityString.isNullOrEmpty(profileDBCliente)) {
mdbCliente = new MultiDBTransactionManager();
mdbCliente.setPrimaryDs(profileDBCliente);
mdbCliente.setPrimaryDB(profileDBCliente);
MDBClientiList.add(mdbCliente);
entityListDocClie = createEntityDocResoDelete(mdbCliente, doc, datiReso, partIva, type, format, userNameWeb);
}

View File

@@ -105,7 +105,7 @@ public class DocumentiMilkonExportService {
documentPs.close();
MultiDBTransactionManager mdb = new MultiDBTransactionManager();
mdb.setPrimaryDs(profileDb);
mdb.setPrimaryDB(profileDb);
Connection targetConnection = mdb.getPrimaryConnection();
DtbDoct exportedDocument = null;

View File

@@ -249,7 +249,7 @@ public class EuritmoImportService {
SimpleDateFormat dateFormatFile = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD);
multiDBTransactionManager.close(); /*Chiusura connessione al DB di partenza*/
multiDBTransactionManager.setPrimaryDs(profileDBDest); /*Connessione al database di destinazione per stampare l'etichetta*/
multiDBTransactionManager.setPrimaryDB(profileDBDest); /*Connessione al database di destinazione per stampare l'etichetta*/
for (int a = 0; a < rifColloImported.size(); a++) {
HashMap<String, String> params = new HashMap<String, String>();
params.put("rif_ord", rifColloImported.get(a));

View File

@@ -41,7 +41,7 @@ public class Slim2kLogisticController {
@RequestParam(value = "listcode", required = false) String listCode) {
List<ServiceRestResponse> list = new ArrayList<ServiceRestResponse>();
try {
multiDBTransactionManager.setPrimaryDs(configuration);
multiDBTransactionManager.setPrimaryDB(configuration);
logger.debug(requestDataDTO.getUsername() + " " + requestDataDTO.getPassword() + " " + requestDataDTO.getProfileDB());
list = slim2kLogisticService.importListeDiScarico(listType, listCode);
} catch (Exception e) {
@@ -63,7 +63,7 @@ public class Slim2kLogisticController {
@RequestParam(value = "doctype", required = false) String doctype) {
List<ServiceRestResponse> list = new ArrayList<ServiceRestResponse>();
try {
multiDBTransactionManager.setPrimaryDs(configuration);
multiDBTransactionManager.setPrimaryDB(configuration);
logger.debug(requestDataDTO.getUsername() + " " + requestDataDTO.getPassword() + " " + requestDataDTO.getProfileDB());
list = slim2kLogisticService.importListeDiCarico(scode, dcode, docdate, docnum, refdoc);
} catch (Exception e) {

View File

@@ -39,7 +39,6 @@ import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import static it.integry.ems_model.types.SetupGestKeySection.*;
@@ -289,7 +288,7 @@ public class ColliImportService {
if (UtilityString.isNullOrEmpty(codMdep)) throw new Exception("Codice Deposito dei default non configurato");
MultiDBTransactionManager mdbSteup = new MultiDBTransactionManager();
mdbSteup.setPrimaryDs(profileDb);
mdbSteup.setPrimaryDB(profileDb);
String sql =
"select mtb_colt.gestione, " +

View File

@@ -72,7 +72,7 @@ public class OrdiniConsortileService {
// Connessione al database della consortile
DataSource dsSync = new DataSource();
dsSync.initialize(profileDBDest);
multiDBTransactionManagerDBDest.setPrimaryDs(profileDBDest);
multiDBTransactionManagerDBDest.setPrimaryDB(profileDBDest);
Connection connDBDest = multiDBTransactionManagerDBDest.getDatabaseConnection(profileDBDest);
// Acquisizione elenco ordini da trasferire

View File

@@ -649,7 +649,7 @@ public class PuddyService {
MultiDBTransactionManager multiDBTransactionManagerVG = new MultiDBTransactionManager();
DataSource dsSync = new DataSource();
dsSync.initialize(profileDBVG);
multiDBTransactionManagerVG.setPrimaryDs(profileDBVG);
multiDBTransactionManagerVG.setPrimaryDB(profileDBVG);
// Acquisizione dati agente VG
sql =
@@ -1138,7 +1138,7 @@ public class PuddyService {
if (!UtilityString.isNullOrEmpty(profileDBVG)){
DataSource dsSync = new DataSource();
dsSync.initialize(profileDBVG);
multiDBTransactionManagerVG.setPrimaryDs(profileDBVG);
multiDBTransactionManagerVG.setPrimaryDB(profileDBVG);
columnTipoAzienda = "case when ser_doc like 'V%' then 'ASS_VG' else 'ASS_SEVEN' end";
/*Acquisizione dati agente/data incasso*/

View File

@@ -360,7 +360,7 @@ public class FLProductionService {
String profileDBCentrale = setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "w_pordprod_genera_new2_rc", "PASSAPORTO", "PROFILEDB_CENTRALE");
DataSource dsSync = new DataSource();
dsSync.initialize(profileDBCentrale);
multiDBTransactionManagerDBCentrale.setPrimaryDs(profileDBCentrale);
multiDBTransactionManagerDBCentrale.setPrimaryDB(profileDBCentrale);
Connection connDBCentrale = multiDBTransactionManagerDBCentrale.getDatabaseConnection(profileDBCentrale);
// Acquisizione centro aziendale

View File

@@ -1177,7 +1177,7 @@ public class PvmService {
if (!UtilityString.isNullOrEmpty(dbSave)) {
multiDBTransactionManager.close();
multiDBTransactionManager.setPrimaryDs(dbSave);
multiDBTransactionManager.setPrimaryDB(dbSave);
}
entities = entityProcessor.processEntityList(entities, true);

View File

@@ -46,7 +46,7 @@ public class WMSVerificaGiacenzeService {
multiDBTransactionManager.getPrimaryConnection().getProfileName());
if (!multiDBTransactionManager.getPrimaryConnection().getProfileName().equals(profileDb))
multiDBTransactionManager.setPrimaryDs(profileDb);
multiDBTransactionManager.setPrimaryDB(profileDb);
}
private MtbColt retrieveOpenUds(LocalDateTime dataVerifica, String codMdep) throws Exception {

View File

@@ -2,24 +2,41 @@ package it.integry.ems.system.controller;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.AziendaService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.dto.UpdatePvmEndpointRequestDTO;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.Azienda;
import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@Scope("request")
@RequestMapping("azienda")
public class AziendaController {
private static final Logger logger = LogManager.getLogger(AziendaController.class);
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private AziendaService aziendaService;
@Autowired
private EntityProcessor entityProcessor;
@Autowired
private SettingsModel settingsModel;
@GetMapping()
public ServiceRestResponse getAzienda() throws Exception {
Azienda defaultAzienda = Azienda.getDefaultAzienda(multiDBTransactionManager.getPrimaryConnection());
@@ -38,4 +55,38 @@ public class AziendaController {
public ServiceRestResponse retrieveInternalCodAnagCliente() throws Exception {
return ServiceRestResponse.createPositiveResponse(aziendaService.retrieveInternalCodAnagCliente());
}
@PostMapping("update-pvm-endpoint")
public ServiceRestResponse updatePvmEndpoint(@RequestBody UpdatePvmEndpointRequestDTO requestBody) throws Exception {
if (UtilityString.isNullOrEmpty(requestBody.getEndpoint())) {
throw new IllegalArgumentException("Endpoint cannot be null or empty");
}
List<AvailableConnectionsModel> availableConnections = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true);
Exception firstException = null;
for (AvailableConnectionsModel availableConnection : availableConnections) {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName("DATI_AZIENDA")
.setSection("URL")
.setKeySection("PVM")
.setValue(requestBody.getEndpoint());
stbGestSetup.setOperation(OperationType.INSERT_OR_UPDATE);
try {
multiDBTransactionManager.setPrimaryDB(availableConnection);
entityProcessor.processEntity(stbGestSetup, multiDBTransactionManager);
multiDBTransactionManager.commitAll();
} catch (Exception e) {
logger.error(e.getMessage(), e);
if(firstException == null) firstException = e;
}
}
if(firstException != null) throw firstException;
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -360,7 +360,7 @@ public class SystemService {
stbUser.setUserName(foundUser.getUsername());
stbUser.setLastAccessDatetime(UtilityLocalDate.getNowTime());
multiDBTransactionManager.setPrimaryDs(foundUser.getProfileDb());
multiDBTransactionManager.setPrimaryDB(foundUser.getProfileDb());
requestDataDTO.setUsername(foundUser.getUsername());
entityProcessor.processEntity(stbUser, true, multiDBTransactionManager);
multiDBTransactionManager.commitAll();