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

This commit is contained in:
2025-05-16 11:29:34 +02:00
4 changed files with 132 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250514085241 extends BaseMigration implements MigrationModelInterface {
@@ -10,6 +11,8 @@ public class Migration_20250514085241 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isCustomerDb(IntegryCustomerDB.Siciliani_DMS))
return;
createOrUpdateFunction("f_GetCostoUltArt_depo", "CREATE FUNCTION [dbo].[f_GetCostoUltArt_depo](@dataReg datetime, @codMdep varchar(5), @codMart varchar(15))\n" +
"RETURNS numeric(20,5) AS\n" +

View File

@@ -473,4 +473,12 @@ public class MesProductionControllerV2 {
}
return ServiceRestResponse.createPositiveResponse();
}
@PostMapping(value = "ordine/reopen")
public @ResponseBody
ServiceRestResponse reopenOrdineLav(@RequestBody ReopenOrdineLavRequestDTO dto) throws Exception {
productionOrdersLifecycleService.reopenOrdineLav(dto);
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -0,0 +1,38 @@
package it.integry.ems.production.dto;
import java.util.Date;
public class ReopenOrdineLavRequestDTO {
private String gestione;
private Date dataOrd;
private Integer numOrd;
public String getGestione() {
return gestione;
}
public ReopenOrdineLavRequestDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Date getDataOrd() {
return dataOrd;
}
public ReopenOrdineLavRequestDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public ReopenOrdineLavRequestDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
}

View File

@@ -7,30 +7,38 @@ import it.integry.ems.document.dto.CaricoLavorazioneDTO;
import it.integry.ems.document.dto.ChiusuraLavorazioneDTO;
import it.integry.ems.document.dto.RientroLavorazioneDTO;
import it.integry.ems.document.dto.ScaricoLavorazioneDTO;
import it.integry.ems.exception.MissingDataException;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.production.dto.MesStopOrdineDTO;
import it.integry.ems.production.dto.ReopenOrdineLavRequestDTO;
import it.integry.ems.service.AziendaService;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.entity.DtbDoct;
import it.integry.ems_model.entity.DtbOrdt;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@Scope("request")
public class ProductionOrdersLifecycleService {
private final Logger logger = LogManager.getLogger();
@Autowired
public MultiDBTransactionManager multiDBTransactionManager;
@@ -49,7 +57,6 @@ public class ProductionOrdersLifecycleService {
@Autowired
private AziendaService aziendaService;
@Autowired
private MesProductionServiceV2 mesProductionServiceV2;
@@ -193,4 +200,78 @@ public class ProductionOrdersLifecycleService {
}
}
public void reopenOrdineLav(ReopenOrdineLavRequestDTO reopenOrdineLavRequestDTO) throws SQLException, IOException, MissingDataException {
if (ObjectUtils.anyNull(
reopenOrdineLavRequestDTO,
reopenOrdineLavRequestDTO.getGestione(),
reopenOrdineLavRequestDTO.getDataOrd(),
reopenOrdineLavRequestDTO.getNumOrd())) {
throw new MissingDataException("Ordine di lavorazione incompleto");
}
try {
String sql = Query.format(
"SELECT cod_mdep\n" +
"FROM dtb_ordt\n" +
"WHERE gestione = %s\n" +
" AND data_ord = %s\n" +
" AND num_ord = %s",
reopenOrdineLavRequestDTO.getGestione(),
reopenOrdineLavRequestDTO.getDataOrd(),
reopenOrdineLavRequestDTO.getNumOrd()
);
String codMdep = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
boolean flagCaricoImmediato = setupGest.getSetupDepoBoolean("CARICO_SCARICO_PF", "SETUP", "GENERA_CARICO_SCARICO_IMMEDIATO", codMdep);
if (!flagCaricoImmediato) {
String codDtipCar = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_CAR");
String codDtipScar = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_SCAR");
String codDtipRien = setupGest.getSetup("W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_RIEN");
sql = Query.format(
"SELECT cod_anag, cod_dtip, data_doc, ser_doc, num_doc\n" +
"FROM dtb_doct\n" +
"WHERE gestione = %s\n" +
" AND data_ord = %s\n" +
" AND num_ord = %s\n" +
" AND cod_dtip IN (%s, %s, %s)",
reopenOrdineLavRequestDTO.getGestione(),
reopenOrdineLavRequestDTO.getDataOrd(),
reopenOrdineLavRequestDTO.getNumOrd(),
codDtipCar,
codDtipScar,
codDtipRien
);
List<DtbDoct> docDaCancellare = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbDoct.class);
if (!UtilityList.isNullOrEmpty(docDaCancellare)) {
docDaCancellare.forEach(dtbDoct -> dtbDoct.setOperation(OperationType.DELETE));
entityProcessor.processEntityList(docDaCancellare, false);
UtilityEntity.throwEntitiesException(docDaCancellare);
}
}
DtbOrdt ordDaRiaprire = new DtbOrdt()
.setGestione(reopenOrdineLavRequestDTO.getGestione())
.setDataOrd(reopenOrdineLavRequestDTO.getDataOrd())
.setNumOrd(reopenOrdineLavRequestDTO.getNumOrd())
.setFlagEvasoProd("I")
.setFlagEvasoForzato("N");
ordDaRiaprire.setOperation(OperationType.UPDATE);
entityProcessor.processEntity(ordDaRiaprire, true, multiDBTransactionManager);
multiDBTransactionManager.commitAll();
} catch (Exception e) {
logger.error(e);
multiDBTransactionManager.rollbackAll();
}
}
}