Refactoring servizi PhpApp rimuovendo utilizzo di connessioni per problemi con connection pool
This commit is contained in:
2025-04-22 19:15:56 +02:00
parent d7247a2298
commit 7bcb1a8630
9 changed files with 466 additions and 424 deletions

View File

@@ -180,7 +180,7 @@ public class WsOrder {
fileJson.write(articolo.toString());*/
this.conn.commit();
this.conn.close();
// this.conn.close();
} catch (Exception e) {
throw new Exception("WsOrder.getCustomerItemInfo:" + ls_errorText + "\r\t" + e.getMessage());
}
@@ -400,7 +400,7 @@ public class WsOrder {
}
conn.commit();
conn.close();
// conn.close();
lcl_return = UtilityDB.valueToString(li_numOrd);
} catch (Exception e) {

View File

@@ -20,27 +20,22 @@ import java.util.List;
public class WsPriceList {
private String is_query;
private Connection connect;
private final Logger logger = LogManager.getLogger();
private void setConnect(Connection connect) {
this.connect = connect;
public WsPriceList() {
;
}
public WsPriceList(Connection conn) {
this.connect = conn;
}
public String getCustomerPriceListNew(String profileDB, String data_prezzo, String cod_anag, String cod_vdes, String cod_vlis, String Cod_mgrp, String cod_msgr, String cod_msfa, String cod_mart) throws Exception {
public String getCustomerPriceListNew(Connection conn, String profileDB, String data_prezzo, String cod_anag, String cod_vdes, String cod_vlis, String Cod_mgrp, String cod_msgr, String cod_msfa, String cod_mart) throws Exception {
String jsonString;
/*logger.debug("Connessione a DB " + profileDB);*/
jsonString = this.getPriceListNew(profileDB, data_prezzo, cod_anag, cod_vdes, cod_vlis, Cod_mgrp, cod_msgr, cod_msfa, cod_mart);
jsonString = this.getPriceListNew(conn,profileDB, data_prezzo, cod_anag, cod_vdes, cod_vlis, Cod_mgrp, cod_msgr, cod_msfa, cod_mart);
try {
connect.commit();
connect.close();
conn.commit();
} catch (SQLException e) {
/*lcl_return = utilityObject.GetExceptionMessage(utilityObject.GetCurrentClassName(this), utilityObject.GetCurrentMethodName(this), profileDB, e, "");*/
throw new Exception("WsPriceList.getCustomerPriceListNew: " + e.getMessage());
@@ -49,7 +44,7 @@ public class WsPriceList {
return jsonString;
}
private String getPriceListNew(String profileDB, String data_prezzo, String cod_anag, String cod_vdes, String cod_vlis, String cod_mgrp, String cod_msgr, String cod_msfa, String cod_mart) throws Exception {
private String getPriceListNew(Connection conn, String profileDB, String data_prezzo, String cod_anag, String cod_vdes, String cod_vlis, String cod_mgrp, String cod_msgr, String cod_msfa, String cod_mart) throws Exception {
String ls_codGriglia, ls_condArticoli = "", ls_codMart, ls_descrizione, ls_codMgrp, ls_descrMgrp, ls_codMsgr,
ls_descrMsgr, ls_codMsfa, ls_descrMsfa, ls_logoWeb, ls_codMgrpOld, ls_codMsgrOld, ls_codMsfaOld,
ls_untMis, ls_queryCountArt, ls_erroreChkArt, ls_codMdep, ls_statoArt = null,
@@ -66,7 +61,7 @@ public class WsPriceList {
ResultSet resArt;
CustomerData customerData = new CustomerData(connect);
CustomerData customerData = new CustomerData(conn);
//VALORIZZAZIONE VARIABILI
ls_codGriglia = "";
@@ -116,18 +111,18 @@ public class WsPriceList {
" vvw_promozioni.cod_anag = " + UtilityDB.valueToString(cod_anag) + " AND " +
" vvw_promozioni.cod_vdes = " + UtilityDB.valueToString(cod_vdes);
Statement cmd = connect.createStatement();
Statement cmd = conn.createStatement();
cmd.execute(ls_query);
String ls_viewVendite;
ls_viewVendite = getFlagOrderView(profileDB, cod_anag, cod_vdes, data_prezzo);
ls_viewVendite = getFlagOrderView(conn, profileDB, cod_anag, cod_vdes, data_prezzo);
tmpView.add(ls_viewVendite);
if (ls_condArticoli.compareTo("") != 0) {
ls_queryCountArt = "SELECT count(*) FROM mtb_aart ";
ls_queryCountArt = UtilityDB.addwhereCond(ls_queryCountArt, ls_condArticoli, false);
PreparedStatement infoCountArt = connect.prepareStatement(ls_queryCountArt, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
PreparedStatement infoCountArt = conn.prepareStatement(ls_queryCountArt, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet resCountArt = infoCountArt.executeQuery();
while (resCountArt.next()) {
@@ -149,7 +144,7 @@ public class WsPriceList {
"WHERE cod_griglia = " + UtilityDB.valueToString(ls_codGriglia) + " AND " +
" data_validita <= " + data_prezzo;
PreparedStatement infoGriglia = connect.prepareStatement(ls_queryGriglia, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
PreparedStatement infoGriglia = conn.prepareStatement(ls_queryGriglia, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet resGriglia = infoGriglia.executeQuery();
while (resGriglia.next()) {
@@ -243,15 +238,15 @@ public class WsPriceList {
" 30 ";
/* ******* THIS QUERY RETURNS ALL THE ARTICLES THAT THE CLIENT CAN VISUALIZE, INDEPENDENTLY FROM THE FACTORY WHICH PRODUCES THEM (IT VISUALIZES TOGETHER es. DIVELLA, DULCESOL, ORTOROMI *********/
is_query = UtilityDB.addwhereCond(is_query, ls_condArticoli, false);
connect.commit();
// connect.commit();
int counter = 0;
infoArt = connect.prepareStatement(is_query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
infoArt = conn.prepareStatement(is_query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
resArt = infoArt.executeQuery();
JSONObject divisione = new JSONObject();
connect.commit();
// connect.commit();
logger.debug(is_query);
JSONObject le_divisione = null;//("cod_mgrp");
@@ -397,12 +392,12 @@ public class WsPriceList {
} catch (Exception e) {
throw new Exception("WsPriceList.getPriceListNew." + profileDB + ": " + e.getMessage() + "; query= " + is_query);
} finally {
UtilityDB.dropTmpView(connect, tmpView);
UtilityDB.dropTmpView(conn, tmpView);
}
return le_priceList.toString();
}
private String getFlagOrderView(String profileDB, String cod_anag, String cod_vdes, String data_ord) throws
private String getFlagOrderView(Connection conn, String profileDB, String cod_anag, String cod_vdes, String data_ord) throws
Exception {
Statement cmd;
@@ -429,7 +424,7 @@ public class WsPriceList {
String ls_viewVendite = UtilityDB.defTmpTabName("v2_");
is_query = "CREATE VIEW " + ls_viewVendite + " AS " + is_query;
cmd = connect.createStatement();
cmd = conn.createStatement();
cmd.execute(is_query);
cmd.close();
return ls_viewVendite;

View File

@@ -196,7 +196,7 @@ public class BasicConnectionPool {
// Verifica se la connessione esiste già
if (activeConnectionNames.get(dbName).contains(connectionName)) {
logger.warn("Extra connection name collision detected: {}", connectionName);
extraConnectionCounters.get(dbName).decrementAndGet();
// extraConnectionCounters.get(dbName).decrementAndGet();
return createExtraConnection(profileName); // Riprova con un nuovo nome
}

View File

@@ -3,7 +3,7 @@ package it.integry.ems.order.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.order.dto.phpApp.CustomerPriceListDTO;
import it.integry.ems.order.dto.phpApp.NextNumOrdWebDTO;
import it.integry.ems.response.OrderVerify;
import it.integry.ems.order.phpApp.OrderVerify;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.response.WsOrder;
import it.integry.ems.response.WsPriceList;
@@ -60,21 +60,21 @@ public class PhpAppController {
try {
conn = multiDBTransactionManager.getPrimaryConnection(); // ex setConnection
OrderVerify orderVerify = new OrderVerify(gestione, dataOrd, serOrd, numOrd, codAnag, codVdes, conn);
OrderVerify orderVerify = new OrderVerify(gestione, dataOrd, serOrd, numOrd, codAnag, codVdes);
orderVerify.checkArticoli();
orderVerify.checkArticoli(conn);
orderVerify.checkAssortimento();
orderVerify.checkAssortimento(conn);
orderVerify.checkCondContr();
orderVerify.checkCondContr(conn);
orderVerify.checkPromoOrd();
orderVerify.checkPromoOrd(conn);
orderVerify.checkOmaggiOrd();
orderVerify.checkOmaggiOrd(conn);
orderVerify.setPromoScontiContr(); /*avoided orderVerify.getErrorImport(); IMPORTED THE ERROR INTO AN XML FILE */
orderVerify.setPromoScontiContr(conn); /*avoided orderVerify.getErrorImport(); IMPORTED THE ERROR INTO AN XML FILE */
orderVerify.setFlagElaborato(flagElaborato);
orderVerify.setFlagElaborato(flagElaborato,conn);
res = ServiceRestResponse.createPositiveResponse();
@@ -135,10 +135,8 @@ public class PhpAppController {
String cod_msgr = json.getCodMsgr();
String cod_msfa = json.getCodMsfa();
String cod_mart = json.getCodMart();
Connection conn;
conn = multiDBTransactionManager.getPrimaryConnection();
WsPriceList priceListItem = new WsPriceList(conn);
String priceList = priceListItem.getCustomerPriceListNew(config, UtilityDB.valueDateToString(data_prezzo, "yyyy-MM-dd"), cod_anag, cod_vdes, cod_vlis, cod_mgrp, cod_msgr, cod_msfa, cod_mart);
WsPriceList priceListItem = new WsPriceList();
String priceList = priceListItem.getCustomerPriceListNew(multiDBTransactionManager.getPrimaryConnection(),config, UtilityDB.valueDateToString(data_prezzo, "yyyy-MM-dd"), cod_anag, cod_vdes, cod_vlis, cod_mgrp, cod_msgr, cod_msfa, cod_mart);
res = ServiceRestResponse.createPositiveResponse();
res.setJsonObject(priceList);
} catch (Exception e) {

View File

@@ -0,0 +1,92 @@
package it.integry.ems.order.phpApp.dto;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
public class PromoDTO {
@SqlField("qta_cnf")
private BigDecimal qtaCnf;
@SqlField("cod_promo")
private String codPromo;
@SqlField("um_vend")
private String umVend;
@SqlField("cod_aliq")
private String codAliq;
@SqlField("qta_omaggio")
private BigDecimal qtaOmaggio;
@SqlField("qta_vend")
private BigDecimal qtaVend;
@SqlField("flag_tipo_promo")
private String flagTipoPromo;
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public PromoDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public String getCodPromo() {
return codPromo;
}
public PromoDTO setCodPromo(String codPromo) {
this.codPromo = codPromo;
return this;
}
public String getUmVend() {
return umVend;
}
public PromoDTO setUmVend(String umVend) {
this.umVend = umVend;
return this;
}
public String getCodAliq() {
return codAliq;
}
public PromoDTO setCodAliq(String codAliq) {
this.codAliq = codAliq;
return this;
}
public BigDecimal getQtaOmaggio() {
return qtaOmaggio;
}
public PromoDTO setQtaOmaggio(BigDecimal qtaOmaggio) {
this.qtaOmaggio = qtaOmaggio;
return this;
}
public BigDecimal getQtaVend() {
return qtaVend;
}
public PromoDTO setQtaVend(BigDecimal qtaVend) {
this.qtaVend = qtaVend;
return this;
}
public String getFlagTipoPromo() {
return flagTipoPromo;
}
public PromoDTO setFlagTipoPromo(String flagTipoPromo) {
this.flagTipoPromo = flagTipoPromo;
return this;
}
}

View File

@@ -0,0 +1,44 @@
package it.integry.ems.order.phpApp.dto;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
public class ResocontoPromoDTO {
@SqlField("cod_promo")
private String codPromo;
@SqlField("qta_ord_tot")
private BigDecimal qtaOrdTot;
@SqlField("qta_omg_tot")
private BigDecimal qtaOmgTot;
public String getCodPromo() {
return codPromo;
}
public ResocontoPromoDTO setCodPromo(String codPromo) {
this.codPromo = codPromo;
return this;
}
public BigDecimal getQtaOrdTot() {
return qtaOrdTot;
}
public ResocontoPromoDTO setQtaOrdTot(BigDecimal qtaOrdTot) {
this.qtaOrdTot = qtaOrdTot;
return this;
}
public BigDecimal getQtaOmgTot() {
return qtaOmgTot;
}
public ResocontoPromoDTO setQtaOmgTot(BigDecimal qtaOmgTot) {
this.qtaOmgTot = qtaOmgTot;
return this;
}
}

View File

@@ -0,0 +1,103 @@
package it.integry.ems.order.phpApp.dto;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
public class RigaOrdWithPromoDTO {
@SqlField("cod_promo")
private String codPromo;
@SqlField("cod_mart")
private String codMart;
@SqlField("qta_ord")
private BigDecimal qtaOrd;
@SqlField("qta_omg")
private BigDecimal qtaOmg;
@SqlField("um_vend")
private String umVend;
@SqlField("um_omaggio")
private String umOmaggio;
@SqlField("riga_ord")
private Long rigaOrd;
@SqlField("qta_cnf")
private BigDecimal qtaCnf;
public String getCodPromo() {
return codPromo;
}
public RigaOrdWithPromoDTO setCodPromo(String codPromo) {
this.codPromo = codPromo;
return this;
}
public String getCodMart() {
return codMart;
}
public RigaOrdWithPromoDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public RigaOrdWithPromoDTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public BigDecimal getQtaOmg() {
return qtaOmg;
}
public RigaOrdWithPromoDTO setQtaOmg(BigDecimal qtaOmg) {
this.qtaOmg = qtaOmg;
return this;
}
public String getUmVend() {
return umVend;
}
public RigaOrdWithPromoDTO setUmVend(String umVend) {
this.umVend = umVend;
return this;
}
public String getUmOmaggio() {
return umOmaggio;
}
public RigaOrdWithPromoDTO setUmOmaggio(String umOmaggio) {
this.umOmaggio = umOmaggio;
return this;
}
public Long getRigaOrd() {
return rigaOrd;
}
public RigaOrdWithPromoDTO setRigaOrd(Long rigaOrd) {
this.rigaOrd = rigaOrd;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public RigaOrdWithPromoDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
}

View File

@@ -166,13 +166,7 @@ public class PvmService {
" WHERE STB_GEST_SETUP_DEPO.citta_cons like '%" + citta + "%' " +
" GROUP BY num_range, dstart, dEnd, num_cons_max, CITTA_CONS ";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
ResultSetMapper rsChkCons = new ResultSetMapper();
List<OrdChkConsDTO> ordChkConsDTO = rsChkCons.mapResultSetToList(rs, OrdChkConsDTO.class);
rs.close();
ps.close();
List<OrdChkConsDTO> ordChkConsDTO = UtilityDB.executeSimpleQueryDTO(conn,sql, OrdChkConsDTO.class);
return ordChkConsDTO;