Merge remote-tracking branch 'origin/feature/RefactoringGestioneColli' into feature/RefactoringGestioneColli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-07-16 19:30:29 +02:00
4 changed files with 49 additions and 62 deletions

View File

@@ -9,6 +9,7 @@ public class SaveCqPomodoriRGDTO {
private String barcodeUl; private String barcodeUl;
private String posizione; private String posizione;
private String codJfas;
private MtbPartitaMag partitaMag; private MtbPartitaMag partitaMag;
private String annotazioni; private String annotazioni;
@@ -30,6 +31,15 @@ public class SaveCqPomodoriRGDTO {
return this; return this;
} }
public String getCodJfas() {
return codJfas;
}
public SaveCqPomodoriRGDTO setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public MtbPartitaMag getPartitaMag() { public MtbPartitaMag getPartitaMag() {
return partitaMag; return partitaMag;
} }

View File

@@ -15,6 +15,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.exchange.dto.CertificatiValorizzatiDTO; import it.integry.ems.system.exchange.dto.CertificatiValorizzatiDTO;
import it.integry.ems.system.exchange.service.structure.ExchangeImportDataManagerService; import it.integry.ems.system.exchange.service.structure.ExchangeImportDataManagerService;
import it.integry.ems.system.exchange.service.structure.ExchangeImportSchemaManagerService; import it.integry.ems.system.exchange.service.structure.ExchangeImportSchemaManagerService;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EquatableEntityInterface; import it.integry.ems_model.base.EquatableEntityInterface;
import it.integry.ems_model.entity.MtbColt; import it.integry.ems_model.entity.MtbColt;
@@ -410,27 +411,27 @@ public class RossoGarganoProductionService {
MtbColt mtbColt = WMSUtility.retrieveBarcodeUlAnag(multiDBTransactionManager.getPrimaryConnection(), dto.getBarcodeUl()); MtbColt mtbColt = WMSUtility.retrieveBarcodeUlAnag(multiDBTransactionManager.getPrimaryConnection(), dto.getBarcodeUl());
if (mtbColt == null) if (mtbColt == null)
throw new Exception("Impossibile identificare il carico selezionato!"); throw new Exception("Impossibile identificare il carico selezionato!");
boolean movementEdited = false;
if (UtilityString.hasContent(dto.getPosizione())) { if (UtilityString.hasContent(dto.getCodJfas())) {
mtbColt.setCodJfas(dto.getCodJfas());
List<MvwSitArtUdcDetInventarioDTO> giacenzaUl = wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUl(multiDBTransactionManager.getPrimaryConnection(), dto.getBarcodeUl()); movementEdited = true;
if (!UtilityList.isNullOrEmpty(giacenzaUl)) {
wmsGenericService.cambiaPosizioneUL(new UpdatePosizioneULRequestDTO()
.setSscc(dto.getBarcodeUl())
.setPosizione(dto.getPosizione()));
}
} }
if (UtilityString.hasContent(dto.getAnnotazioni())) { if (UtilityString.hasContent(dto.getAnnotazioni())) {
mtbColt.setAnnotazioni(dto.getAnnotazioni()); mtbColt.setAnnotazioni(dto.getAnnotazioni());
movementEdited = true;
}
if (movementEdited) {
mtbColt.setOperation(OperationType.UPDATE);
entityList.add(mtbColt); entityList.add(mtbColt);
} }
if (dto.getPartitaMag() != null) { if (dto.getPartitaMag() != null) {
dto.getPartitaMag().setOperation(OperationType.UPDATE); dto.getPartitaMag().setOperation(OperationType.UPDATE);
entityList.add(dto.getPartitaMag()); entityList.add(dto.getPartitaMag());
} }
entityProcessor.processEntityList(entityList,multiDBTransactionManager,true); entityProcessor.processEntityList(entityList, multiDBTransactionManager, true);
UtilityEntity.throwEntitiesException(entityList);
} }

View File

@@ -3289,7 +3289,7 @@ public class DocumentProdService {
DtbOrdt ordine = chiusuraLavorazioneDTO.getOrdine(); DtbOrdt ordine = chiusuraLavorazioneDTO.getOrdine();
ScaricoLavorazioneDTO datiScarico = chiusuraLavorazioneDTO.getScaricoLavorazioneDTO(); ScaricoLavorazioneDTO datiScarico = chiusuraLavorazioneDTO.getScaricoLavorazioneDTO();
// Acquisizione dati prodotto finito per riproporzionare i materiali //<editor-fold desc="Acquisizione dati prodotto finito per riproporzionare i materiali">
String sql = String sql =
" SELECT DISTINCT ordL.cod_prod, " + " SELECT DISTINCT ordL.cod_prod, " +
" ordL.unt_mis_prod, " + " ordL.unt_mis_prod, " +
@@ -3320,10 +3320,12 @@ public class DocumentProdService {
if (dettaglioScaricoDTO == null) { if (dettaglioScaricoDTO == null) {
throw new Exception("L'ordine di lavorazione n." + UtilityDB.valueToString(ordine.getNumOrd()) + " del " + UtilityDB.valueToString(ordine.getDataOrd()) + " e/o la distinta corrispondente presentano delle anomalie."); throw new Exception("L'ordine di lavorazione n." + UtilityDB.valueToString(ordine.getNumOrd()) + " del " + UtilityDB.valueToString(ordine.getDataOrd()) + " e/o la distinta corrispondente presentano delle anomalie.");
} }
//</editor-fold>
// Acquisizione dati prodotto dall'esterno //<editor-fold desc="Acquisizione dati prodotto dall'esterno">
BigDecimal qtaProdUMMag = produzioneOrdine.getQuantita(); BigDecimal qtaProdUMMag = produzioneOrdine.getQuantita();
BigDecimal qtaProd = qtaProdUMMag.divide(ordine.getRapConvProd(), 5, RoundingMode.HALF_UP); BigDecimal qtaProd = qtaProdUMMag.divide(ordine.getRapConvProd(), 5, RoundingMode.HALF_UP);
//</editor-fold>
// Verifica esistenza partita magazzino // Verifica esistenza partita magazzino

View File

@@ -28,10 +28,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@@ -64,7 +61,7 @@ public class WMSMagazzinoBufferService {
private WMSGiacenzaULService wmsGiacenzaULService; private WMSGiacenzaULService wmsGiacenzaULService;
public boolean isVersamentoStarted(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String posizione) throws Exception { public boolean isVersamentoStarted(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String codJfas) throws Exception {
String barcodeUl = magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl(); String barcodeUl = magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl();
String sql = Query.format("SELECT * FROM mtb_colr" + String sql = Query.format("SELECT * FROM mtb_colr" +
@@ -73,8 +70,9 @@ public class WMSMagazzinoBufferService {
"mtb_colr.ser_collo = mtb_colt.ser_collo AND " + "mtb_colr.ser_collo = mtb_colt.ser_collo AND " +
"mtb_colr.num_collo = mtb_colt.num_collo " + "mtb_colr.num_collo = mtb_colt.num_collo " +
" WHERE barcode_ul_out = {} " + " WHERE barcode_ul_out = {} " +
" AND posizione_out = " + UtilityDB.valueToString(posizione) + " and segno = -1 " +
" AND qta_col = 0", barcodeUl); " AND mtb_colt.cod_jfas = {}" +
" AND qta_col = 0", barcodeUl, codJfas);
final List<MtbColr> refMtbColrs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColr.class); final List<MtbColr> refMtbColrs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColr.class);
@@ -84,7 +82,7 @@ public class WMSMagazzinoBufferService {
public void startVersamentoMateriale(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String posizione) throws Exception { public void startVersamentoMateriale(MagazzinoBufferVersamentoMaterialeRequestDTO magazzinoBufferVersamentoMaterialeRequestDTO, String posizione) throws Exception {
if (isVersamentoStarted(magazzinoBufferVersamentoMaterialeRequestDTO, posizione)) if (isVersamentoStarted(magazzinoBufferVersamentoMaterialeRequestDTO, posizione))
throw new Exception("C'è già un versamento attivo su questa posizione"); throw new Exception("C'è già un versamento attivo su questa linea");
MtbColt mtbColtRef = WMSUtility.retrieveBarcodeUlAnag(multiDBTransactionManager.getPrimaryConnection(), magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl()); MtbColt mtbColtRef = WMSUtility.retrieveBarcodeUlAnag(multiDBTransactionManager.getPrimaryConnection(), magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl());
if (mtbColtRef == null) if (mtbColtRef == null)
@@ -151,10 +149,9 @@ public class WMSMagazzinoBufferService {
final List<MvwSitArtUdcDetInventarioDTO> udcMtbColrs = wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUl(multiDBTransactionManager.getPrimaryConnection(), magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl()); final List<MvwSitArtUdcDetInventarioDTO> udcMtbColrs = wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUl(multiDBTransactionManager.getPrimaryConnection(), magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl());
if (UtilityList.isNullOrEmpty(udcMtbColrs)) if (UtilityList.isNullOrEmpty(udcMtbColrs))
throw new Exception("Nessuna UDC trovata"); throw new Exception("Nessuna UDC trovata");
final MvwSitArtUdcDetInventarioDTO giacenzaUDC = udcMtbColrs.stream().filter(x->x.getPosizione().equalsIgnoreCase(posizione)).findFirst().orElse(null); if (udcMtbColrs.size() > 1)
throw new Exception("Il barcode selezionato è presente più volte nella giacenza!");
if (giacenzaUDC == null) final MvwSitArtUdcDetInventarioDTO giacenzaUDC = udcMtbColrs.stream().findFirst().orElse(null);
throw new Exception("Nessuna UDC trovata");
if (UtilityBigDecimal.greaterThan(magazzinoBufferVersamentoMaterialeRequestDTO.getNumCnfDaScaricare(), giacenzaUDC.getNumCnf())) { if (UtilityBigDecimal.greaterThan(magazzinoBufferVersamentoMaterialeRequestDTO.getNumCnfDaScaricare(), giacenzaUDC.getNumCnf())) {
throw new Exception(String.format("La quantità che si vuole scaricare (%d colli) è maggiore della quantità disponibile (%d colli)", throw new Exception(String.format("La quantità che si vuole scaricare (%d colli) è maggiore della quantità disponibile (%d colli)",
@@ -192,11 +189,11 @@ public class WMSMagazzinoBufferService {
giacenzaUm = giacenzaUm.subtract(clone.getQtaCol()); giacenzaUm = giacenzaUm.subtract(clone.getQtaCol());
giacenzaCnf = giacenzaCnf.subtract(BigDecimal.ONE); giacenzaCnf = giacenzaCnf.subtract(BigDecimal.ONE);
if (i == totalNumCnf -2){ if (i == totalNumCnf - 2) {
if (UtilityBigDecimal.greaterThan(giacenzaUm.abs(),BigDecimal.valueOf(0.1))) if (UtilityBigDecimal.lowerThan(giacenzaUm.abs(), BigDecimal.valueOf(0.1)))
clone.setQtaCol(clone.getQtaCol().add(giacenzaUm)); clone.setQtaCol(clone.getQtaCol().add(giacenzaUm));
if (UtilityBigDecimal.greaterThan(giacenzaCnf.abs(),BigDecimal.valueOf(0.1))) if (UtilityBigDecimal.lowerThan(giacenzaCnf.abs(), BigDecimal.valueOf(0.1)))
clone.setNumCnf(clone.getQtaCol().add(giacenzaCnf)); clone.setNumCnf(clone.getNumCnf().add(giacenzaCnf));
} }
LocalDateTime dateTimeRow = clone.getDatetimeRow(); LocalDateTime dateTimeRow = clone.getDatetimeRow();
@@ -262,7 +259,7 @@ public class WMSMagazzinoBufferService {
//controllo che non si cerchi di scaricare più di quello che è presente nel collo originale //controllo che non si cerchi di scaricare più di quello che è presente nel collo originale
checkQuantitaScaricate(colloRif, mapScarichi.get(barcodeUlOut)); checkQuantitaScaricate(colloRif, mapScarichi.get(barcodeUlOut));
for (MagazzinoBufferVersamentoMaterialeEditRequestDTO dto : mapScarichi.get(barcodeUlOut)) { for (MagazzinoBufferVersamentoMaterialeEditRequestDTO dto : mapScarichi.get(barcodeUlOut).stream().sorted(Comparator.comparing(MagazzinoBufferVersamentoMaterialeEditRequestDTO::getNumCnfVers)).collect(Collectors.toList())) {
MtbColt scarico = MagazzinoBufferVersamentoMaterialeEditRequestDTO.getMtbColt(dto); MtbColt scarico = MagazzinoBufferVersamentoMaterialeEditRequestDTO.getMtbColt(dto);
entityProcessor.processEntity(scarico, true, multiDBTransactionManager); entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
if (UtilityString.isNullOrEmpty(scarico.getCodAnag())) { if (UtilityString.isNullOrEmpty(scarico.getCodAnag())) {
@@ -270,39 +267,16 @@ public class WMSMagazzinoBufferService {
} }
//sgancio il collo dal documenti di scarico (verrà ricreato a fine procedura) //sgancio il collo dal documenti di scarico (verrà ricreato a fine procedura)
DtbDoct docScarico = documentProdService.sganciaDocumentoDaCollo(scarico); DtbDoct docScarico = documentProdService.sganciaDocumentoDaCollo(scarico);
if (dto.getNumCnfVers().equals(BigDecimal.ZERO)){
scarico.setOperation(OperationType.DELETE); scarico.setOperation(OperationType.DELETE);
entityProcessor.processEntity(scarico, false, multiDBTransactionManager); entityProcessor.processEntity(scarico, false, multiDBTransactionManager);
return; if (dto.getNumCnfVers().equals(BigDecimal.ZERO)) {
continue;
} }
MtbColr rows = new MtbColr();
//elimino tutte le righe MagazzinoBufferVersamentoMaterialeRequestDTO startVersamentoRequest = new MagazzinoBufferVersamentoMaterialeRequestDTO();
rows.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), scarico); startVersamentoRequest.setBarcodeUl(dto.getBarcodeUl())
scarico.setPosizione(dto.getPosizione())
.setOraInizPrep(UtilityLocalDate.localDateTimeToDate(dto.getOraInizPrep()))
.setOraFinePrep(UtilityLocalDate.localDateTimeToDate(dto.getOraFinePrep()))
.setCodJfas(dto.getCodJfas()); .setCodJfas(dto.getCodJfas());
entityProcessor.processEntity(scarico, true, multiDBTransactionManager); startVersamentoMateriale(startVersamentoRequest, dto.getCodJfas());
MtbColr udcMtbColr = new MtbColr();
udcMtbColr
.setGestione(colloRif.getGestione())
.setDataCollo(colloRif.getDataCollo())
.setSerCollo(colloRif.getSerCollo())
.setNumCollo(colloRif.getNumCollo())
.setPosizioneIn(dto.getPosizione())
.setBarcodeUlIn(dto.getBarcodeUl())
.setCodMdepIn(dto.getCodMdep());
wmsLavorazioneService.insertUDSRow(new InsertUDSRowRequestDTO()
.setTargetMtbColt(scarico)
.setSourceMtbColr(udcMtbColr)
.setCodMart(dto.getCodMart())
.setQtaTot(BigDecimal.ZERO)
.setNumCnf(BigDecimal.ZERO)
.setQtaCnf(dto.getQtaCnf())
.setPartitaMag(dto.getPartitaMag()));
MagazzinoBufferVersamentoMaterialeCloseRequestDTO endVersamentoRequest = new MagazzinoBufferVersamentoMaterialeCloseRequestDTO(); MagazzinoBufferVersamentoMaterialeCloseRequestDTO endVersamentoRequest = new MagazzinoBufferVersamentoMaterialeCloseRequestDTO();
endVersamentoRequest endVersamentoRequest