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