Merge branch 'hotfix/Hotfix-1'
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:
@@ -482,7 +482,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
super(logger);
|
||||
}
|
||||
|
||||
public DtbOrdt(String gestione, LocalDate dataOrd,Integer numOrd) {
|
||||
public DtbOrdt(String gestione, LocalDate dataOrd, Integer numOrd) {
|
||||
super(logger);
|
||||
this.gestione = gestione;
|
||||
this.dataOrd = UtilityLocalDate.localDateToDate(dataOrd);
|
||||
@@ -1789,7 +1789,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
|
||||
@Override
|
||||
public void checkPreSave() throws Exception {
|
||||
switch(getOperation()) {
|
||||
switch (getOperation()) {
|
||||
case NO_OP:
|
||||
case SELECT_OBJECT:
|
||||
case SELECT:
|
||||
@@ -1935,7 +1935,7 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
if (this == other)
|
||||
return true;
|
||||
|
||||
if(hashCodeKey() != other.hashCodeKey())
|
||||
if (hashCodeKey() != other.hashCodeKey())
|
||||
return false;
|
||||
|
||||
return getDataOrd().equals(other.getDataOrd()) && getGestione().equals(other.getGestione()) && Objects.equals(getNumOrd(), other.getNumOrd());
|
||||
@@ -1953,4 +1953,17 @@ public class DtbOrdt extends DtbDocOrdT implements EquatableEntityInterface<DtbO
|
||||
public int hashCode() {
|
||||
return Objects.hash(getDataOrd(), getGestione(), getNumOrd(), getAcconto(), getActivityId(), getActivityTypeId(), getAspettoBeni(), getCausaleTrasp(), getCodAbi(), getCodAnag(), getCodAuto(), getCodBanc(), getCodBancAzi(), getCodCab(), getCodDgrpArt(), getCodDivi(), getCodEtic(), getCodFornTd(), getCodJcom(), getCodJfas(), getCodMdep(), getCodPaga(), getCodProd(), getCodTcolUi(), getCodTcolUl(), getCodVage(), getCodVage2(), getCodVdes(), getCodVvet(), getCodVvet2(), getCodVzon(), getColliPedana(), getCompilatoDa(), getControllatoDa(), getDataConsProd(), getDataConsProdMax(), getDataEsportazione(), getDataConferma(), getDataInizProd(), getDataInizTrasp(), getDataInsOrd(), getDataOrdRif(), getRifDataOrd(), getDataRicezione(), getDataRifScad(), getDataUltMod(), getDescrEstesaProd(), getDescrizionePaga(), getDescrizioneProd(), getEanFidelity(), getFlagAnnulla(), getFlagEscRoyal(), getFlagEvasoForzato(), getFlagEvasoProd(), getFlagPrzScontati(), getFlagSospeso(), getFlagTipologia(), getGestioneRif(), getItemId(), getListino(), getLivello(), getMezzo(), getModificatoDa(), getNettoMerce(), getNolo(), getNolo2(), getNote(), getNumColli(), getNumCons(), getNumFase(), getNumOrdProvv(), getNumOrdRif(), getRifNumOrd(), getPartitaMag(), getPercEsclStat(), getPersonaRif(), getPeso(), getPorto(), getQtaEvasaProd(), getQtaPrenotataRep(), getQtaProd(), getRapConvProd(), getRfid(), getRifOrd(), getRigaOrdRif(), getSconto1(), getSconto2(), getSconto3(), getSconto4(), getSerie(), getTermCons(), getTipoAnag(), getTotFasi(), getTotImponib(), getTotIva(), getTotMerce(), getTotOmaggi(), getTotProvvig(), getUntMisProd(), getFlagPrzIva(), getNoteConferma(), getCodJflav(), getTarga(), getPostiPallet(), getFlagBudget(), getDataConsRich(), getNoteExport(), getNumCnfProd(), getCodLingua(), getCambio(), getUserName(), getFlagTd(), getGestisciStralciOrdV(), getIdViaggioTestata(), getExplodeKit(), getGestisciOrdLavTx(), getOrdTrasf(), isGeneraOrdLavDaProd());
|
||||
}
|
||||
|
||||
public void clearChilds() {
|
||||
setDtbOrdr(new ArrayList<>());
|
||||
setDtbOrds(new ArrayList<>());
|
||||
setDtbOrdL(new ArrayList<>());
|
||||
setDtbOrdMacc(new ArrayList<>());
|
||||
setDtbOrdSteps(new ArrayList<>());
|
||||
setDtbOrdCq(new ArrayList<>());
|
||||
setDtbOrdCqr(new ArrayList<>());
|
||||
setJrlDisOrd(new ArrayList<>());
|
||||
setDrlOrdAttached(new ArrayList<>());
|
||||
setArlSchaccOrd(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -495,7 +495,7 @@ public class MesProductionControllerV2 {
|
||||
@PostMapping(value = "ordine/ripianifica")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse ripianifica(@RequestBody RipianificaOrdineLavRequestDTO dto) throws Exception {
|
||||
productionOrdersLifecycleService.ripianificaOrdLav(dto);
|
||||
productionOrdersLifecycleService.ripianificaOrdLav(multiDBTransactionManager,dto);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
@@ -353,6 +353,16 @@ public class MesProductionServiceV2 {
|
||||
));
|
||||
}
|
||||
|
||||
if (lastStep.getDataIniz() != null && lastStep.getDataFine() == null) {
|
||||
throw new Exception(String.format(
|
||||
"L'ordine selezionato è già in corso su questa linea. (Gestione %s, data ord. %s, num ord. %d, linea %s)",
|
||||
gestioneOrd,
|
||||
CommonConstants.DATE_DMY_SLASHED_FORMATTER.format(dataOrd),
|
||||
numOrd,
|
||||
codJfas
|
||||
));
|
||||
}
|
||||
|
||||
Date dataIniz;
|
||||
if (dataInizLav == null) {
|
||||
dataIniz = new Date();
|
||||
|
||||
@@ -16,6 +16,7 @@ import it.integry.ems.production.dto.ReopenOrdineLavRequestDTO;
|
||||
import it.integry.ems.production.event.ProductionOrderClosedEvent;
|
||||
import it.integry.ems.service.AziendaService;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
@@ -27,11 +28,13 @@ import it.integry.ems_model.utility.*;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.docx4j.org.apache.xpath.operations.Mult;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@@ -347,25 +350,64 @@ public class ProductionOrdersLifecycleService {
|
||||
}
|
||||
}
|
||||
|
||||
public void ripianificaOrdLav(RipianificaOrdineLavRequestDTO ripianificaOrdineLavRequestDTO) throws Exception {
|
||||
public void ripianificaOrdLav(MultiDBTransactionManager multiDBTransactionManager, RipianificaOrdineLavRequestDTO ripianificaOrdineLavRequestDTO) throws Exception {
|
||||
//<editor-fold desc="Retrieve impostazioni e variabili base">
|
||||
Connection connection = multiDBTransactionManager.getPrimaryConnection();
|
||||
|
||||
DtbOrdt ordL = new DtbOrdt(ripianificaOrdineLavRequestDTO.getGestione(), ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getNumOrd());
|
||||
ordL.setOperation(OperationType.SELECT_OBJECT);
|
||||
entityProcessor.processEntity(ordL, true, multiDBTransactionManager);
|
||||
|
||||
LocalDate dataPianificazione = UtilityLocalDate.isNull(ripianificaOrdineLavRequestDTO.getDataPianificazione(), ripianificaOrdineLavRequestDTO.getDataOrd());
|
||||
String codJfas = UtilityString.isNull(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld());
|
||||
|
||||
boolean reimpostaLotto = setupGest.getSetupDepoBoolean("PVM", "MONITORAGGIO_LINEE_V2", "REIMPOSTA_LOTTO_ORDINE_RIPIANIFICATO", ordL.getCodMdep());
|
||||
boolean flagEditedCodJfas = !ripianificaOrdineLavRequestDTO.getCodJfasOld().equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew());
|
||||
boolean flagEditedDataOrd = !UtilityLocalDate.isSameDay(ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getDataPianificazione());
|
||||
//</editor-fold>
|
||||
|
||||
if (!flagEditedCodJfas && !flagEditedDataOrd) {
|
||||
throw new Exception("Nessuna modifica da apportare.");
|
||||
}
|
||||
|
||||
//<editor-fold desc="Cambio data di produzione">
|
||||
if (flagEditedDataOrd) {
|
||||
ripianificaDataOrdLav(connection, ordL, ripianificaOrdineLavRequestDTO.getDataPianificazione());
|
||||
ordL.clearChilds();
|
||||
ordL.setOldPk(null);
|
||||
}
|
||||
//</editor-fold>
|
||||
|
||||
//<editor-fold desc="Cambio linea">
|
||||
if (flagEditedCodJfas) {
|
||||
ripianificaLineaOrdLav(connection, ordL, codJfas);
|
||||
}
|
||||
//</editor-fold>
|
||||
|
||||
//<editor-fold desc="Ricalcolo dati ordine di produzione">
|
||||
|
||||
DtbOrdr oldRigaProd = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, Query.format(
|
||||
"SELECT * from dtb_ordr where gestione = {} and data_ord = {} and num_ord = {} and riga_ord = {}",
|
||||
ordL.getGestioneRif(),
|
||||
ordL.getDataOrdRif(),
|
||||
ordL.getNumOrdRif(),
|
||||
ordL.getRigaOrdRif()
|
||||
), DtbOrdr.class);
|
||||
|
||||
if (oldRigaProd == null)
|
||||
throw new Exception("Riga ordine di produzione originale non trovata.");
|
||||
|
||||
|
||||
DtbOrdt dtbOrdtP = new DtbOrdt()
|
||||
.setCodJfas(UtilityString.isNull(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld()))
|
||||
.setDataOrd(UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataPianificazione() == null ?
|
||||
ripianificaOrdineLavRequestDTO.getDataOrd() :
|
||||
ripianificaOrdineLavRequestDTO.getDataPianificazione())
|
||||
)
|
||||
.setCodJfas(codJfas)
|
||||
.setDataOrd(UtilityLocalDate.localDateToDate(dataPianificazione))
|
||||
.setGestione("A")
|
||||
.setGestioneRif("A")
|
||||
.setGeneraOrdLavDaProd(false)
|
||||
.setOrdTrasf(false);
|
||||
dtbOrdtP.setOperation(OperationType.SELECT_OBJECT);
|
||||
dtbOrdtP.setOnlyPkMaster(false);
|
||||
entityProcessor.processEntity(dtbOrdtP, multiDBTransactionManager);
|
||||
|
||||
boolean reimpostaLotto = setupGest.getSetupDepoBoolean("PVM", "MONITORAGGIO_LINEE_V2", "REIMPOSTA_LOTTO_ORDINE_RIPIANIFICATO", dtbOrdtP.getCodMdep());
|
||||
boolean flagEditedCodJfas = !ripianificaOrdineLavRequestDTO.getCodJfasOld().equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew());
|
||||
boolean flagEditedDataOrd = !UtilityLocalDate.isSameDay(ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getDataPianificazione());
|
||||
entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager);
|
||||
|
||||
|
||||
if (dtbOrdtP.getNumOrd() == null) {
|
||||
@@ -375,15 +417,15 @@ public class ProductionOrdersLifecycleService {
|
||||
" FROM dtb_ordt " +
|
||||
"WHERE EXISTS (SELECT * FROM dtb_ordt orl WHERE dtb_ordt.gestione = orl.gestione_rif AND dtb_ordt.data_ord = orl.data_ord_rif AND " +
|
||||
"dtb_ordt.num_ord = orl.num_ord_rif and gestione = %s and data_ord = %s and num_ord = %s)",
|
||||
ripianificaOrdineLavRequestDTO.getGestione(),
|
||||
ripianificaOrdineLavRequestDTO.getDataOrd(),
|
||||
ripianificaOrdineLavRequestDTO.getNumOrd()
|
||||
ordL.getGestione(),
|
||||
ordL.getDataOrd(),
|
||||
ordL.getNumOrd()
|
||||
);
|
||||
|
||||
dtbOrdtP = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
|
||||
dtbOrdtP
|
||||
.setCodJfas(ripianificaOrdineLavRequestDTO.getCodJfasNew() == null ? dtbOrdtP.getCodJfas() : ripianificaOrdineLavRequestDTO.getCodJfasNew())
|
||||
.setDataOrd(ripianificaOrdineLavRequestDTO.getDataPianificazione() == null ? dtbOrdtP.getDataOrd() : UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataPianificazione()))
|
||||
.setCodJfas(codJfas)
|
||||
.setDataOrd(UtilityLocalDate.localDateToDate(dataPianificazione))
|
||||
.setNumOrd(null)
|
||||
.setGeneraOrdLavDaProd(false)
|
||||
.setOrdTrasf(false);
|
||||
@@ -392,66 +434,46 @@ public class ProductionOrdersLifecycleService {
|
||||
entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
String sql =
|
||||
Query.format("SELECT ISNULL(MAX(riga_ord), 0) + 1 FROM dtb_ordr WHERE gestione = %s AND data_ord = %s AND num_ord = %s",
|
||||
dtbOrdtP.getGestione(),
|
||||
dtbOrdtP.getDataOrd(),
|
||||
dtbOrdtP.getNumOrd());
|
||||
dtbOrdtP.setOperation(OperationType.UPDATE);
|
||||
dtbOrdtP.getDtbOrdr().add(oldRigaProd);
|
||||
|
||||
Integer rigaOrdProd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
Integer rigaOrdProd = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), Query.format("SELECT ISNULL(MAX(riga_ord), 0) + 1 FROM dtb_ordr WHERE gestione = %s AND data_ord = %s AND num_ord = %s",
|
||||
dtbOrdtP.getGestione(),
|
||||
dtbOrdtP.getDataOrd(),
|
||||
dtbOrdtP.getNumOrd()));
|
||||
|
||||
HashMap<String, Object> oldPk = new HashMap<>();
|
||||
Date dataOrd = UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataOrd());
|
||||
if (ripianificaOrdineLavRequestDTO.getDataPianificazione() != null &&
|
||||
!ripianificaOrdineLavRequestDTO.getDataOrd().equals(ripianificaOrdineLavRequestDTO.getDataPianificazione())) {
|
||||
oldPk.put("dataOrd", ripianificaOrdineLavRequestDTO.getDataOrd());
|
||||
dataOrd = UtilityLocalDate.localDateToDate(ripianificaOrdineLavRequestDTO.getDataPianificazione());
|
||||
}
|
||||
|
||||
DtbOrdt dtbOrdl = new DtbOrdt()
|
||||
.setDataOrd(dataOrd)
|
||||
.setGestione(ripianificaOrdineLavRequestDTO.getGestione())
|
||||
.setNumOrd(ripianificaOrdineLavRequestDTO.getNumOrd())
|
||||
oldRigaProd
|
||||
.setOldPk(new HashMap<String, Object>() {{
|
||||
put("dataOrd", oldRigaProd.getDataOrd());
|
||||
put("gestione", oldRigaProd.getGestione());
|
||||
put("numOrd", oldRigaProd.getNumOrd());
|
||||
put("rigaOrd", oldRigaProd.getRigaOrd());
|
||||
}});
|
||||
oldRigaProd.setRigaOrd(rigaOrdProd)
|
||||
.setCodJfas(codJfas)
|
||||
.setDataOrd(dtbOrdtP.getDataOrd())
|
||||
.setNumOrd(dtbOrdtP.getNumOrd())
|
||||
.setGestione(dtbOrdtP.getGestione())
|
||||
.setOperation(OperationType.SUBSTITUTE);
|
||||
ordL
|
||||
.setGestioneRif(dtbOrdtP.getGestione())
|
||||
.setDataOrdRif(dtbOrdtP.getDataOrd())
|
||||
.setNumOrdRif(dtbOrdtP.getNumOrd())
|
||||
.setDataConsProd(dataOrd)
|
||||
.setRigaOrdRif(rigaOrdProd);
|
||||
if (!oldPk.isEmpty()) {
|
||||
dtbOrdl.setOldPk(oldPk);
|
||||
dtbOrdl.setOperation(OperationType.SUBSTITUTE);
|
||||
} else {
|
||||
dtbOrdl.setOperation(OperationType.UPDATE);
|
||||
.setDataConsProd(UtilityLocalDate.localDateToDate(dataPianificazione))
|
||||
.setRigaOrdRif(rigaOrdProd)
|
||||
.setDtbOrdtProd(null);
|
||||
//</editor-fold>
|
||||
|
||||
//<editor-fold desc="Altre operazioni">
|
||||
if (reimpostaLotto) {
|
||||
ordL.setPartitaMag(EmsRestConstants.NULL);
|
||||
}
|
||||
//</editor-fold>
|
||||
|
||||
if (reimpostaLotto && (flagEditedCodJfas || flagEditedDataOrd)) {
|
||||
dtbOrdl.setPartitaMag(EmsRestConstants.NULL);
|
||||
}
|
||||
ordL.setOperation(OperationType.UPDATE);
|
||||
|
||||
if (!UtilityString.equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld())) {
|
||||
sql =
|
||||
Query.format(
|
||||
"SELECT * FROM dtb_ord_steps WHERE gestione = %s AND data_ord = %s AND num_ord = %s ORDER BY data_fine desc",
|
||||
ripianificaOrdineLavRequestDTO.getGestione(),
|
||||
ripianificaOrdineLavRequestDTO.getDataOrd(),
|
||||
ripianificaOrdineLavRequestDTO.getNumOrd());
|
||||
DtbOrdSteps lastStep = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdSteps.class);
|
||||
|
||||
lastStep.setFlagStepAttivo("N");
|
||||
lastStep.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
dtbOrdl.getDtbOrdSteps().add(lastStep);
|
||||
|
||||
DtbOrdSteps dtbOrdSteps = (DtbOrdSteps) lastStep.deepClone();
|
||||
dtbOrdSteps
|
||||
.setCodJfas(ripianificaOrdineLavRequestDTO.getCodJfasNew())
|
||||
.setIdRiga(0)
|
||||
.setDataIniz(new Date())
|
||||
.setDataFine(new Date())
|
||||
.setFlagStepAttivo("S");
|
||||
dtbOrdSteps.setOperation(OperationType.INSERT);
|
||||
dtbOrdl.getDtbOrdSteps().add(dtbOrdSteps);
|
||||
}
|
||||
entityProcessor.processEntity(dtbOrdl, true, multiDBTransactionManager);
|
||||
entityProcessor.processEntity(dtbOrdtP, true, multiDBTransactionManager);
|
||||
entityProcessor.processEntity(ordL, true, multiDBTransactionManager);
|
||||
|
||||
}
|
||||
|
||||
@@ -484,4 +506,39 @@ public class ProductionOrdersLifecycleService {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void ripianificaDataOrdLav(Connection connection, DtbOrdt ordLav, LocalDate dataPianificazione) throws Exception {
|
||||
HashMap<String, Object> oldPk = new HashMap<>();
|
||||
oldPk.put("dataOrd", ordLav.getDataOrd());
|
||||
ordLav
|
||||
.setDataOrd(UtilityLocalDate.localDateToDate(dataPianificazione))
|
||||
.setOldPk(oldPk);
|
||||
|
||||
ordLav.setOperation(OperationType.SUBSTITUTE);
|
||||
entityProcessor.processEntity(ordLav, true, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
private void ripianificaLineaOrdLav(Connection connection, DtbOrdt dtbOrdt, String codJfas) throws Exception {
|
||||
String sql =
|
||||
Query.format(
|
||||
"SELECT * FROM dtb_ord_steps WHERE gestione = %s AND data_ord = %s AND num_ord = %s ORDER BY data_fine desc, id_step DESC, id_riga DESC",
|
||||
dtbOrdt.getGestione(),
|
||||
dtbOrdt.getDataOrd(),
|
||||
dtbOrdt.getNumOrd());
|
||||
DtbOrdSteps lastStep = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdSteps.class);
|
||||
|
||||
lastStep.setFlagStepAttivo("N");
|
||||
lastStep.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||
dtbOrdt.getDtbOrdSteps().add(lastStep);
|
||||
|
||||
DtbOrdSteps dtbOrdSteps = (DtbOrdSteps) lastStep.deepClone();
|
||||
dtbOrdSteps
|
||||
.setCodJfas(codJfas)
|
||||
.setIdRiga(0)
|
||||
.setDataIniz(new Date())
|
||||
.setDataFine(new Date())
|
||||
.setFlagStepAttivo("S");
|
||||
dtbOrdSteps.setOperation(OperationType.INSERT);
|
||||
dtbOrdt.getDtbOrdSteps().add(dtbOrdSteps);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user