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 posizione;
private String codJfas;
private MtbPartitaMag partitaMag;
private String annotazioni;
@@ -30,6 +31,15 @@ public class SaveCqPomodoriRGDTO {
return this;
}
public String getCodJfas() {
return codJfas;
}
public SaveCqPomodoriRGDTO setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public MtbPartitaMag getPartitaMag() {
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.service.structure.ExchangeImportDataManagerService;
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.EquatableEntityInterface;
import it.integry.ems_model.entity.MtbColt;
@@ -410,27 +411,27 @@ public class RossoGarganoProductionService {
MtbColt mtbColt = WMSUtility.retrieveBarcodeUlAnag(multiDBTransactionManager.getPrimaryConnection(), dto.getBarcodeUl());
if (mtbColt == null)
throw new Exception("Impossibile identificare il carico selezionato!");
if (UtilityString.hasContent(dto.getPosizione())) {
List<MvwSitArtUdcDetInventarioDTO> giacenzaUl = wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUl(multiDBTransactionManager.getPrimaryConnection(), dto.getBarcodeUl());
if (!UtilityList.isNullOrEmpty(giacenzaUl)) {
wmsGenericService.cambiaPosizioneUL(new UpdatePosizioneULRequestDTO()
.setSscc(dto.getBarcodeUl())
.setPosizione(dto.getPosizione()));
}
boolean movementEdited = false;
if (UtilityString.hasContent(dto.getCodJfas())) {
mtbColt.setCodJfas(dto.getCodJfas());
movementEdited = true;
}
if (UtilityString.hasContent(dto.getAnnotazioni())) {
mtbColt.setAnnotazioni(dto.getAnnotazioni());
movementEdited = true;
}
if (movementEdited) {
mtbColt.setOperation(OperationType.UPDATE);
entityList.add(mtbColt);
}
if (dto.getPartitaMag() != null) {
dto.getPartitaMag().setOperation(OperationType.UPDATE);
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();
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 =
" SELECT DISTINCT ordL.cod_prod, " +
" ordL.unt_mis_prod, " +
@@ -3320,10 +3320,12 @@ public class DocumentProdService {
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.");
}
//</editor-fold>
// Acquisizione dati prodotto dall'esterno
//<editor-fold desc="Acquisizione dati prodotto dall'esterno">
BigDecimal qtaProdUMMag = produzioneOrdine.getQuantita();
BigDecimal qtaProd = qtaProdUMMag.divide(ordine.getRapConvProd(), 5, RoundingMode.HALF_UP);
//</editor-fold>
// Verifica esistenza partita magazzino

View File

@@ -28,10 +28,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -64,7 +61,7 @@ public class WMSMagazzinoBufferService {
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 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.num_collo = mtb_colt.num_collo " +
" WHERE barcode_ul_out = {} " +
" AND posizione_out = " + UtilityDB.valueToString(posizione) +
" AND qta_col = 0", barcodeUl);
" and segno = -1 " +
" AND mtb_colt.cod_jfas = {}" +
" AND qta_col = 0", barcodeUl, codJfas);
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 {
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());
if (mtbColtRef == null)
@@ -151,10 +149,9 @@ public class WMSMagazzinoBufferService {
final List<MvwSitArtUdcDetInventarioDTO> udcMtbColrs = wmsGiacenzaULService.retrieveArtsInGiacenzaByBarcodeUl(multiDBTransactionManager.getPrimaryConnection(), magazzinoBufferVersamentoMaterialeRequestDTO.getBarcodeUl());
if (UtilityList.isNullOrEmpty(udcMtbColrs))
throw new Exception("Nessuna UDC trovata");
final MvwSitArtUdcDetInventarioDTO giacenzaUDC = udcMtbColrs.stream().filter(x->x.getPosizione().equalsIgnoreCase(posizione)).findFirst().orElse(null);
if (giacenzaUDC == null)
throw new Exception("Nessuna UDC trovata");
if (udcMtbColrs.size() > 1)
throw new Exception("Il barcode selezionato è presente più volte nella giacenza!");
final MvwSitArtUdcDetInventarioDTO giacenzaUDC = udcMtbColrs.stream().findFirst().orElse(null);
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)",
@@ -192,11 +189,11 @@ public class WMSMagazzinoBufferService {
giacenzaUm = giacenzaUm.subtract(clone.getQtaCol());
giacenzaCnf = giacenzaCnf.subtract(BigDecimal.ONE);
if (i == totalNumCnf -2){
if (UtilityBigDecimal.greaterThan(giacenzaUm.abs(),BigDecimal.valueOf(0.1)))
if (i == totalNumCnf - 2) {
if (UtilityBigDecimal.lowerThan(giacenzaUm.abs(), BigDecimal.valueOf(0.1)))
clone.setQtaCol(clone.getQtaCol().add(giacenzaUm));
if (UtilityBigDecimal.greaterThan(giacenzaCnf.abs(),BigDecimal.valueOf(0.1)))
clone.setNumCnf(clone.getQtaCol().add(giacenzaCnf));
if (UtilityBigDecimal.lowerThan(giacenzaCnf.abs(), BigDecimal.valueOf(0.1)))
clone.setNumCnf(clone.getNumCnf().add(giacenzaCnf));
}
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
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);
entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
if (UtilityString.isNullOrEmpty(scarico.getCodAnag())) {
@@ -270,39 +267,16 @@ public class WMSMagazzinoBufferService {
}
//sgancio il collo dal documenti di scarico (verrà ricreato a fine procedura)
DtbDoct docScarico = documentProdService.sganciaDocumentoDaCollo(scarico);
if (dto.getNumCnfVers().equals(BigDecimal.ZERO)){
scarico.setOperation(OperationType.DELETE);
entityProcessor.processEntity(scarico, false, multiDBTransactionManager);
return;
if (dto.getNumCnfVers().equals(BigDecimal.ZERO)) {
continue;
}
MtbColr rows = new MtbColr();
//elimino tutte le righe
rows.deleteAllEntities(multiDBTransactionManager.getPrimaryConnection(), scarico);
scarico.setPosizione(dto.getPosizione())
.setOraInizPrep(UtilityLocalDate.localDateTimeToDate(dto.getOraInizPrep()))
.setOraFinePrep(UtilityLocalDate.localDateTimeToDate(dto.getOraFinePrep()))
MagazzinoBufferVersamentoMaterialeRequestDTO startVersamentoRequest = new MagazzinoBufferVersamentoMaterialeRequestDTO();
startVersamentoRequest.setBarcodeUl(dto.getBarcodeUl())
.setCodJfas(dto.getCodJfas());
entityProcessor.processEntity(scarico, true, multiDBTransactionManager);
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()));
startVersamentoMateriale(startVersamentoRequest, dto.getCodJfas());
MagazzinoBufferVersamentoMaterialeCloseRequestDTO endVersamentoRequest = new MagazzinoBufferVersamentoMaterialeCloseRequestDTO();
endVersamentoRequest