From caf6ffe38e8939c7191683b16d072975b8e61efa Mon Sep 17 00:00:00 2001 From: FabioN Date: Thu, 15 May 2025 18:15:51 +0200 Subject: [PATCH 1/2] Mmodifica per DMS --- .../integry/ems/migration/model/Migration_20250514085241.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250514085241.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250514085241.java index 2477fdd3d4..0af5670a79 100644 --- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250514085241.java +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250514085241.java @@ -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" + From 204542a16031c02782841a933f264257fda63601 Mon Sep 17 00:00:00 2001 From: AnthonyS Date: Fri, 16 May 2025 10:07:00 +0200 Subject: [PATCH 2/2] Creato metodo per riapertura ordine di lavorazione MES --- .../controller/MesProductionControllerV2.java | 8 ++ .../dto/ReopenOrdineLavRequestDTO.java | 38 +++++++++ .../ProductionOrdersLifecycleService.java | 85 ++++++++++++++++++- 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 ems-engine/src/main/java/it/integry/ems/production/dto/ReopenOrdineLavRequestDTO.java diff --git a/ems-engine/src/main/java/it/integry/ems/production/controller/MesProductionControllerV2.java b/ems-engine/src/main/java/it/integry/ems/production/controller/MesProductionControllerV2.java index 73b65efd99..e979967fd4 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/controller/MesProductionControllerV2.java +++ b/ems-engine/src/main/java/it/integry/ems/production/controller/MesProductionControllerV2.java @@ -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(); + } } diff --git a/ems-engine/src/main/java/it/integry/ems/production/dto/ReopenOrdineLavRequestDTO.java b/ems-engine/src/main/java/it/integry/ems/production/dto/ReopenOrdineLavRequestDTO.java new file mode 100644 index 0000000000..8a5f1e5b29 --- /dev/null +++ b/ems-engine/src/main/java/it/integry/ems/production/dto/ReopenOrdineLavRequestDTO.java @@ -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; + } +} diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java index 6639adb363..9fbbccfc86 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java @@ -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 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(); + } + } }