Piccolo refactoring ICONImportService
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-07-08 10:01:46 +02:00
parent 0d8101ec05
commit f4189b71e0

View File

@@ -10,13 +10,13 @@ import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.MtbColr;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityLocalDate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -31,6 +31,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@@ -196,7 +197,7 @@ public class ICONImportService {
public List<MtbColt> returnMissionePicking(String type, String format, List<AnomalieDTO> anomalies) throws Exception {
String serColloMagAuto = null, gestioneMagMaga = null, filtroOrdini = null, codAnag = null, codVdes = null, codVlis = null, codMdep = null;
LocalDate dataColloMagAuto = null;
Date dataOrd = null;
LocalDate dataOrd = null;
Integer numColloMagAuto = null, numOrd = null;
List<ServiceRestResponse> respList = new ArrayList<ServiceRestResponse>();
List<MtbColt> colTDistributed = new ArrayList<MtbColt>();
@@ -224,16 +225,13 @@ public class ICONImportService {
" from mtb_colt " +
" where posizione = " + UtilityDB.valueToString(posizione) + " and " +
" segno = 1 ";
PreparedStatement psInfo = conn.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet resInfo = psInfo.executeQuery();
while (resInfo.next()) {
dataColloMagAuto = UtilityLocalDate.localDateFromDate(resInfo.getDate(1));
serColloMagAuto = resInfo.getString(2);
numColloMagAuto = resInfo.getInt(3);
gestioneMagMaga = resInfo.getString(4);
}
resInfo.close();
psInfo.close();
final HashMap<String, Object> result = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query);
dataColloMagAuto = UtilityLocalDate.localDateFromDate(UtilityHashMap.getValueIfExists(result, "data_collo"));
serColloMagAuto = UtilityHashMap.getValueIfExists(result, "ser_collo");
numColloMagAuto = UtilityHashMap.getValueIfExists(result, "num_collo");
gestioneMagMaga = UtilityHashMap.getValueIfExists(result, "gestione");
// Acquisizione liste importare da ICON con successo
query = "SELECT tmkeymov, " +
@@ -248,12 +246,13 @@ public class ICONImportService {
" tmdirflu = " + UtilityDB.valueToString(dirFlu) + " and " +
" left(tmparmte, 2) = 'P|' ";
PreparedStatement ps = conICON.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet res = ps.executeQuery();
while (res.next()) {
Integer keyMov = res.getInt(1);
String tmparmte = res.getString(2);
String nomeLista = res.getString(4);
final List<HashMap<String, Object>> iconImportedLists = UtilityDB.executeSimpleQuery(conICON, query);
for (HashMap<String, Object> iconImportedRow : iconImportedLists) {
Integer keyMov = UtilityHashMap.getValueIfExists(iconImportedRow, "tmkeymov");
String tmparmte = UtilityHashMap.getValueIfExists(iconImportedRow, "tmparmte");
String nomeLista = UtilityHashMap.getValueIfExists(iconImportedRow, "tmname");
// Acquisizione estremi ordini di vendita
String[] keyApprov = tmparmte.split("\\|");
@@ -266,13 +265,13 @@ public class ICONImportService {
// Se il collo esiste e ci sono già delle righe all'interno allora vuol dire che la missione è stata chiusa parzialmente e ripresa successivamente
// quindi è necessario creare un nuovo collo (testata uguale al precedente in modo da acquisre il filtro ordine)
boolean existCollo = false, isPickingLibero = false;
;
int isPartialPicking = 0;
query = "select mtb_colt.filtro_ordini, " +
" mtb_colt.cod_mdep, " +
" mtb_colt.data_ord, " +
" mtb_colt.num_ord, " +
" sum(case when mtb_colr.cod_mart is null then 0 else 1 end ) as existRow " +
query = "select mtb_colt.filtro_ordini AS filtro_ordini, " +
" mtb_colt.cod_mdep AS cod_mdep, " +
" mtb_colt.data_ord AS data_ord, " +
" mtb_colt.num_ord AS num_ord, " +
" sum(case when mtb_colr.cod_mart is null then 0 else 1 end ) AS existRow " +
" from mtb_colt LEFT OUTER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione and " +
" mtb_colt.data_collo = mtb_colr.data_collo and " +
" mtb_colt.ser_collo = mtb_colr.ser_collo and " +
@@ -285,28 +284,28 @@ public class ICONImportService {
" mtb_colt.cod_mdep, " +
" mtb_colt.data_ord, " +
" mtb_colt.num_ord";
psInfo = conn.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
resInfo = psInfo.executeQuery();
while (resInfo.next()) {
existCollo = true;
filtroOrdini = resInfo.getString(1);
codMdep = resInfo.getString(2);
dataOrd = resInfo.getDate(3);
numOrd = resInfo.getInt(4);
isPartialPicking = resInfo.getInt(5);
final HashMap<String, Object> openedPickingResult = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query);
existCollo = openedPickingResult != null;
if(existCollo) {
filtroOrdini = UtilityHashMap.getValueIfExists(openedPickingResult, "filtro_ordini");
codMdep = UtilityHashMap.getValueIfExists(openedPickingResult, "cod_mdep");
dataOrd = UtilityLocalDate.localDateFromDate(UtilityHashMap.getValueIfExists(openedPickingResult, "data_ord"));
numOrd = UtilityHashMap.getValueIfExists(openedPickingResult, "num_ord");
isPartialPicking = UtilityHashMap.getValueIfExists(openedPickingResult, "existRow");
if (dataOrd == null) {
isPickingLibero = true;
}
}
resInfo.close();
psInfo.close();
// Se il collo di partenza non esiste allora viene saltata la missione ed inviato un messaggio di
// alert impostando come importata la lista in modo da non creare intasamento nelle mail di notifica
if (existCollo) {
List<MtbColt> listImported = new ArrayList<MtbColt>();
Integer index = 0;
int index = 0;
query = "SELECT rmcodart, " +
" sum(rmqtamov) as qta_mov " +
" FROM [dbo].[mvrig01l]" +
@@ -335,7 +334,7 @@ public class ICONImportService {
colT.setRifOrd("PICKING LIBERO");
}
colT.setSegno(-1);
colT.setDataOrd(UtilityLocalDate.localDateFromDate(dataOrd));
colT.setDataOrd(dataOrd);
colT.setNumOrd(numOrd);
colT.setCodMdep(codMdep);
colT.setAnnotazioni(nomeLista);
@@ -365,7 +364,6 @@ public class ICONImportService {
// Se non vi è il filtro ordini allora vuol dire che si tratta di un picking libero e quindi veiene solo registrato il collo di partenza
if (filtroOrdini != null) {
// Distribuzione collo vendita
List<MtbColt> colTDistr = new ArrayList<>();
DistribuzioneColliService distrCollo = new DistribuzioneColliService();
FiltroDistribuzioneColloDTO filtro = new FiltroDistribuzioneColloDTO();
filtro.setGestione(collo.getGestione());
@@ -373,7 +371,7 @@ public class ICONImportService {
filtro.setSerCollo(collo.getSerCollo());
filtro.setNumCollo(collo.getNumCollo());
filtro.setCriterioDistribuzione("U");
colTDistr = distrCollo.distribuzioneRigheColloNew(filtro, true);
List<MtbColt> colTDistr = distrCollo.distribuzioneRigheColloNew(filtro, true);
colTDistributed.addAll(colTDistr);
entityProcessor.processEntityList(colTDistr, multiDBTransactionManager, true);
@@ -391,25 +389,21 @@ public class ICONImportService {
" mtb_colt.num_collo = mtb_colr.num_collo and " +
" mtb_colr.riga_ord is null ";
psInfo = multiDBTransactionManager.prepareStatement(query);
resInfo = psInfo.executeQuery();
MtbColt colloDistribuito = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbColt.class);
ResultSetMapper mapper = new ResultSetMapper();
List<MtbColt> colloDistribuito = mapper.mapResultSetToList(resInfo, MtbColt.class);
if (colloDistribuito != null && !colloDistribuito.isEmpty()) {
if (colloDistribuito != null) {
String errorText = "(PICKING) Referenze non distribuite su collo N. " + collo.getNumCollo() + " relativa alla lista " + nomeLista + ". Alcune referenze potrebbero essere cambiate nell'ordine dopo avere effettuata la lista di movimentazione articoli";
anomalies.add(AnomalieDTO.error(errorText));
// Se ci sono righe che non sono state distribuite allora bisognerà assegnare il primo codice commessa utile presente negli ordini e il codice del cliente
colloDistribuito.get(0).setOperation(OperationType.UPDATE);
colloDistribuito.get(0).setGestione(gestione);
colloDistribuito.get(0).setDataCollo(dataCollo);
colloDistribuito.get(0).setSerCollo(serCollo);
colloDistribuito.get(0).setNumCollo(collo.getNumCollo());
colloDistribuito.get(0).setCodAnag(colTDistr.get(0).getCodAnag());
colloDistribuito.get(0).setCodVdes(colTDistr.get(0).getCodVdes());
colloDistribuito.get(0).setMtbColr(new ArrayList<MtbColr>());
colloDistribuito.setOperation(OperationType.UPDATE);
colloDistribuito.setGestione(gestione);
colloDistribuito.setDataCollo(dataCollo);
colloDistribuito.setSerCollo(serCollo);
colloDistribuito.setNumCollo(collo.getNumCollo());
colloDistribuito.setCodAnag(colTDistr.get(0).getCodAnag());
colloDistribuito.setCodVdes(colTDistr.get(0).getCodVdes());
colloDistribuito.setMtbColr(new ArrayList<>());
query =
"SELECT riga FROM mtb_colr " +
@@ -418,19 +412,18 @@ public class ICONImportService {
" ser_collo = " + UtilityDB.valueToString(serCollo) + " and " +
" num_collo = " + UtilityDB.valueToString(collo.getNumCollo());
psInfo = conn.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
resInfo = psInfo.executeQuery();
while (resInfo.next()) {
final HashMap<String, Object> resultMtbColr = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query);
if(resultMtbColr != null){
MtbColr colR = new MtbColr();
colR.setOperation(OperationType.UPDATE);
colR.setRiga(resInfo.getInt(1));
colR.setRiga(UtilityHashMap.getValueIfExists(resultMtbColr, "riga"));
colR.setCodJcom(colTDistr.get(0).getMtbColr().get(0).getCodJcom());
colloDistribuito.get(0).getMtbColr().add(colR);
colloDistribuito.getMtbColr().add(colR);
}
psInfo.close();
resInfo.close();
entityProcessor.processEntityList(colloDistribuito, multiDBTransactionManager, true);
entityProcessor.processEntity(colloDistribuito, multiDBTransactionManager, true);
multiDBTransactionManager.commitAll();
}
}
@@ -447,8 +440,6 @@ public class ICONImportService {
conICON.commit();
multiDBTransactionManager.commitAll();
}
res.close();
ps.close();
} catch (Exception e) {
logger.error("(RETURN PICKING) " + e.getLocalizedMessage());