Gestito controllo data scadenza multipla in openStep MES
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

(cherry picked from commit 4656fbb61b)
This commit is contained in:
2025-08-07 15:17:12 +02:00
parent 08215fab9d
commit 8ead6d9fdb

View File

@@ -377,6 +377,45 @@ public class MesProductionServiceV2 {
order.setDtbOrdSteps(new ArrayList<>());
order.getDtbOrdSteps().add(lastStep);
// Se l'ordine è di una linea con controllo scadenza multipla, crea una nuova partita se la partita non è quella odierna
StbGestSetupDet configControlloScadenzaMultipla = productionService.getConfigControlloScadenzaMultipla(codJfas);
if (configControlloScadenzaMultipla != null && configControlloScadenzaMultipla.getValue().equalsIgnoreCase("S")) {
sql = Query.format(
"SELECT data_ins\n" +
"FROM dtb_ordt\n" +
" INNER JOIN mtb_partita_mag mpm ON dtb_ordt.cod_prod = mpm.cod_mart AND dtb_ordt.partita_mag = mpm.partita_mag\n" +
"WHERE gestione = %s\n" +
" AND data_ord = %s\n" +
" and num_ord = %s",
gestioneOrd,
dataOrd,
numOrd
);
Date dataIns = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (dataIns != null && !UtilityDate.isSameDay(dataIns, new Date())) {
// La partita dell'ordine è stata inserita in un giorno diverso da oggi, genera quella nuova
sql = Query.format(
"SELECT gestione, data_ord, num_ord, cod_prod, data_scad, note_lav\n" +
"FROM MES_GetWorkOrders(%s, DATEADD(DAY, -30, GETDATE()), NULL, NULL, NULL) ordini\n" +
"WHERE gestione = %s\n" +
" AND data_ord = %s\n" +
" AND num_ord = %s",
codJfas,
gestioneOrd,
dataOrd,
numOrd
);
OrdineLavorazioneDTO ordine = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, OrdineLavorazioneDTO.class);
this.generaNuovoLottoPerOrdine(ordine, !skipCommit);
}
}
entityProcessor.processEntity(order, skipCommit, multiDBTransactionManager);
//Incremento pos_riga per spostare l'ordine in coda
@@ -2180,37 +2219,37 @@ public class MesProductionServiceV2 {
);
List<OrdineLavorazioneDTO> ordini = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, OrdineLavorazioneDTO.class);
if (ordini == null || ordini.isEmpty()) {
return;
}
for (OrdineLavorazioneDTO dto : ordini) {
Date dataOrd = UtilityDate.getTodayWithoutTime();
String partitaMag = PartitaMagRules.suggestCodePartitaMag(multiDBTransactionManager.getPrimaryConnection(),
new DatiPartitaMagDTO()
.setCodMart(dto.getCodProd())
.setDataOrd(dataOrd)
.setGestione("L")
.setCodJfas(dto.getCodJfas()));
List<EntityBase> listPartitaMag = productionService.insertPartitaMag(new InsertPartitaMagRequestDTO()
.setCodMart(dto.getCodProd())
.setPartitaMag(partitaMag)
.setDataScad(dto.getDataScad())
.setDataOrd(dto.getDataOrd())
.setNumOrd(dto.getNumOrd())
.setGestione(dto.getGestione())
.setCodJfas(dto.getCodJfas())
.setNote(dto.getNoteLav()), true);
this.generaNuovoLottoPerOrdine(dto, true);
}
} catch (Exception e) {
multiDBTransactionManager.rollbackAll();
throw e;
}
}
public void generaNuovoLottoPerOrdine(OrdineLavorazioneDTO ordine, boolean saveEntity) throws Exception {
String partitaMag = PartitaMagRules.suggestCodePartitaMag(multiDBTransactionManager.getPrimaryConnection(),
new DatiPartitaMagDTO()
.setCodMart(ordine.getCodProd())
.setDataOrd(UtilityDate.getTodayWithoutTime())
.setGestione("L")
.setCodJfas(ordine.getCodJfas()));
productionService.insertPartitaMag(new InsertPartitaMagRequestDTO()
.setCodMart(ordine.getCodProd())
.setPartitaMag(partitaMag)
.setDataScad(ordine.getDataScad())
.setDataOrd(ordine.getDataOrd())
.setNumOrd(ordine.getNumOrd())
.setGestione(ordine.getGestione())
.setCodJfas(ordine.getCodJfas())
.setNote(ordine.getNoteLav()), saveEntity);
}
public void duplicaOrdiniGiornoDopo(String codJfas) throws Exception {